Хэш-таблица в Java

Класс Hashtable реализует интерфейс Map и расширяет класс Dictionary. Он реализует хеш-таблицу, которая показывает отношение ключ-значение, т. е. сопоставляет ключи со значениями. Hashtable содержит корзину (индекс) для хранения пары ключ-значение. Хэш-код ключа используется для определения того, в какое ведро должна быть сопоставлена ​​пара ключ-значение.

  • Hashtable похож на HashMap, но он синхронизирован, а HashMap — нет.
  • Объект, используемый в качестве ключа или значения, не должен иметь значение null.
  • Для успешного сохранения и извлечения объекта из Hashtable объект должен реализовать методы hashcode() и equals().
  • Хэш-функция используется для получения местоположения корзины из хэш-кода ключа. Хэш-функция всегда возвращает число для объекта.

Возьмем хеш-таблицу с & Buckets:

На производительность хеш-таблицы влияют два ее параметра: начальная емкость и коэффициент загрузки.

Начальная емкость — количество сегментов в хеш-таблице указывает ее емкость. А начальная емкость — это емкость на момент создания хеш-таблицы. Если начальная емкость больше, чем максимальное количество записей в хеш-таблице, операция повторного хэширования не произойдет. Компромисс между потраченным впустую пространством и потребностью в операции повторного хеширования контролируется начальной емкостью.

Коэффициент загрузки это мера пространства, полученного хеш-таблицей, которое разрешено получить до того, как ее емкость будет автоматически увеличена.

Если нам нужно вставить большое количество записей в хеш-таблицу, лучше создать ее с большой емкостью. Это позволяет вставлять значения более эффективно, чем позволяет выполнять автоматическое перефразирование, необходимое для увеличения таблицы.