Класс 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, если он уже есть в таблице. Возвращает старое значение ключа или pull, если его не было. Если хотя бы один параметр равен null, возникает исключительная ситуация;
- void putAll(Map f) – добавляет все элементы отображения f. В объектах-ключах key должны быть реализованы методы hashCode() и equals ().