Скачать 265.36 Kb.
|
Класс HashtableКласс Hashtable расширяет абстрактный класс Dictionary. В объектах этого класса хранятся пары "ключ — значение". Из таких пар "Фамилия И. О. — номер" состоит, например, телефонный справочник. Еще один пример — анкета. Ее можно представить как совокупность пар "Фамилия — Иванов", "Имя — Петр", "Отчество — Сидорович", "Год рождения — 1975" и т. д. Подобных примеров можно привести множество. Каждый объект класса Hashtable кроме размера (size) — количества пар, имеет еще две характеристики: емкость (capacity) — размер буфера, и показатель загруженности (load factor) — процент заполненности буфера, по достижении которого увеличивается его размер. Для создания объектов класс Hashtable предоставляет четыре конструктора: Hashtable() — создает пустой объект с начальной емкостью в 101 элемент и показателем загруженности 0,75; Hashtable (int capacity) — создает пустой объект с начальной емкостью capacity и показателем загруженности 0,75; Hashtable(int capacity, float loadFactor) — создает пустой объект с начальной емкостью capacity и показателем загруженности loadFactor; Hashtable (Map f) — создает объект класса Hashtable , содержащий все элементы отображения f, с емкостью, равной удвоенному числу элементов отображения f , но не менее 11, и показателем загруженности 0,75. Для заполнения объекта класса Hashtable используются два метода: Object put(Object key, Object value) — добавляет пару " key— value ", если ключа key не было в таблице, и меняет значение value ключа key , если он уже есть в таблице. Возвращает старое значение ключа или null , если его не было. Если хотя бы один параметр равен null , возникает исключительная ситуация. void putAll(Map f) — добавляет все элементы отображения f . В объектах-ключах key должны быть реализованы методы hashCode() и equals (). Метод get (Object key) возвращает значение элемента с ключом key в виде объекта класса Object. Для дальнейшей работы его следует преобразовать к конкретному типу. Логический метод containsKey(Object key) возвращает true , если в таблице есть ключ key . Логический метод containsValue (Object value) или старый метод contains(Object value) возвращают true , если в таблице есть ключи со значением value . Логический метод isEmpty() возвращает true, если в таблице нет элементов. Метод values() представляет все значения value таблицы в виде интерфейса Collection . Все модификации в объекте Сollection изменяют таблицу, и наоборот. Метод keySet() предоставляет все ключи key таблицы в виде интерфейса Set . Все изменения в объекте Set корректируют таблицу, и наоборот. Метод entrySet() представляет все пары " key— value " таблицы в виде интерфейса Set . Все модификации в объекте set изменяют таблицу, и наоборот. Метод toString () возвращает строку, содержащую все пары. Старые методы elements() и keys() возвращают значения и ключи в виде интерфейса Enumeration. Метод remove (Object key) удаляет пару с ключом key , возвращая значение этого ключа, если оно есть, и null , если пара с ключом key не найдена. Метод clear() удаляет все элементы, очищая таблицу. Пример 3. Телефонный справочник import java.util.*; class PhoneBook{ public static void main(String[] args){ Hashtabie yp = new Hashtabie(); String name = null; yp.put("John", "123-45-67"); yp.put ("Lemon", "567-34-12"); yp.put("Bill", "342-65-87"); yp.put("Gates", "423-83-49"); yp.put("Batman", "532-25-08"); try{ name = args[0]; } catch(Exception e){ System.out.println("Usage: Java PhoneBook Name"); return; } if (yp.containsKey(name)) System.out.println(name + "'s phone = " + yp.get(name)); else System.out.println("Sorry, no such name"); } } |