Класс Hashtable в Java был частью оригинального java.util и представляет собой конкретную реализацию Dictionary.

Однако, Java 2 переработал Hashtable, чтобы он также реализовал интерфейс Map. Таким образом, Hashtable теперь интегрирован в структуру коллекций. Он схож с HashMap, но синхронизован.

Как и HashMap, в Java Hashtable хранит пары ключей/значений в хэш-таблице. Используя Hashtable, вы указываете объект, который используется как ключ, и значение, которое вы ходите связать с этим ключом. Этот ключ затем хэшируется, а полученный хэш-код используется как индекс, в котором значение хранится в таблице.

Конструкторы

Вот список конструкторов, предоставляемые классом HashTable.

Конструктор и описание
1Hashtable()
Этот стандартный конструктор хэщ-таблицы, который создаёт экземпляр класса Hashtable.
2Hashtable(int size)
Этот конструктор принимает целочисленный параметр и создаёт хэш-таблицу, имеющая начальный размер, заданный размером целочисленного значения.
3Hashtable(int size, float fillRatio)
Это создаёт хэш-таблицу, в которой есть начальный размер, указанный в size, и коэффициент заполнения, заданный fillRatio. Этот коэффициент должен принимать значение между 0.0 и 1.0, и он определяет, насколько полной может быть хэш-таблица прежде чем она будет изменена в размерах.
4Hashtable(Map < ? extends K, ? extends V > t)
Это построит Hashtable с указанными отображениями.

Методы

Помимо методов, определённых интерфейсом Map, Hashtable определяет следующие методы:

Метод и описание
1void clear()
Сбрасывает и очищает хэш-таблицу.
2Object clone()
Возвращает дубликат вызываемого объекта.
3boolean contains(Object value)
Возвращает true, если некое значение равняется значению, существующему в хэш-таблице. Возвращает false, если значение не было найдено.
4boolean containsKey(Object key)
Возвращает true, если некий ключ равняется ключу, существующему в хэш-таблице. Возвращает false, если ключ не был найден.
5boolean containsValue(Object value)
Возвращает true, если некое значение равняется значению, существующему в хэш-таблице. Возвращает false если значение не было найдено.
6Enumeration elements()
Возвращает перечисление значений, содержащихся в хэш-таблице.
7Object get(Object key)
Возвращает объект, содержащий значение, связанное с ключом. Если ключ не находится в хэш-таблицы, возвращается нулевой объект.
8boolean isEmpty()
Возвращает true, если хэш-таблица пустая; возвращает false, если она содержит хотя бы один ключ.
9Enumeration keys()
Возвращает перечисление ключей, содержащихся в хэш-таблице.
10Object put(Object key, Object value)
Вставляет ключ и значение в хэш-таблицу. Возвращает ноль, если ключ ещё не в хэш-таблице, возвращает предыдущее значение, связанное с ключом, если ключ уже в хэш-таблице.
11void rehash()
Увеличивает размер хэш-таблицы и переопределяет все её ключи.
12Object remove(Object key)
Удаляет ключ и его значение. Возвращает значение, связанное с ключом. Если ключ отсутствует в хэш-таблице, возвращается нулевой объект.
13int size()
Возвращает количество записей в хэш-таблице.
14String toString()
Возвращает строковый эквивалент хэш-таблицы.

Пример

Следующая программа показывает несколько методов, поддерживаемых структурой данных Hashtable в Java:

import java.util.*;
public class HashTableDemo {

   public static void main(String args[]) {
      // Создаёт хэш-карту
      Hashtable balance = new Hashtable();
      Enumeration names;
      String str;
      double bal;

      balance.put("Маша", new Double(3434.34));
      balance.put("Михаил", new Double(123.22));
      balance.put("Олег", new Double(1378.00));
      balance.put("Денис", new Double(99.22));
      balance.put("Антон", new Double(-19.08));

      // Показывает все балансы в хэш-таблицы.
      names = balance.keys();
      
      while(names.hasMoreElements()) {
         str = (String) names.nextElement();
         System.out.println(str + ": " + balance.get(str));
      }        
      System.out.println();
      
      // Вносим 1,000 в аккаунт Маши.
      bal = ((Double)balance.get("Маша")).doubleValue();
      balance.put("Маша", new Double(bal + 1000));
      System.out.println("Новый баланс Маши: " + balance.get("Маша"));
   }
}

Получим следующее:

Антон: -19.08
Маша: 3434.34
Михаил: 123.22
Денис: 99.22
Олег: 1378.0

Новый баланс Маши: 4434.34

Оглавление