Смотрю картинку про хэш‑таблицу и вижу такое слово: buckets. Посоветуйте что это такое и для чего?
Бакетом (англ. bucket — ведро) называют набор элементов хеш‑таблицы с совпадающими/близкими значением хеш‑функции.
Хеш‑функция может принимать большой диапазон значений. Из-за технических ограничений (например, при необходимости экономии памяти) внутренний массив хеш‑таблицы может содержать меньшее количество элементов. Тогда элементы с близкими значениями хеша попадут в одну ячейку.
Ситуацию когда у двух элементов, добавленных в хеш‑таблицу совпадают значение хеша называют коллизией. При этом оба элемента попадают в одну ячейку (корзину/ведро) хеш‑таблицы. Большое число коллизий приводит к замедлению работы хеш‑таблицы.
См. Хеш‑таблица/Разрешение коллизий в Википедии
Картинка иллюстрирует конкретный алгоритм разрешения коллизий — открытую адресацию.
Все элементы хеш-таблицы распределяются по 255 ячейкам (число дано для примера, количество ячеек может быть произвольным). У «John Smith» и «Sandra Dee» хеш совпадает. Оба значения размещаются рядом в хеш‑таблице. При использовании этого алгоритма разрешения коллизий это влияет на следующий элемент «Ted Baker», который перемещается в следующую по порядку корзину несмотря на то что имеет уникальный хеш.
Надо сказать, что класс HashMap
в Java на данный момент использует другой тип разрешения коллизий, в котором каждый бакет представляет из себя дерево поиска, хотя это деталь реализации, не указанная в JavaDoc. Количество бакетов в HashMap
можно задать с помощью capacity и растет по мере необходимости.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
А где принято хранить настройки подключения к БД (путь, логин, пароль) в Java программах?
есть десктопное приложение для обработки метеорологических данныхВычисления достаточно трудоемкие, для получения результата к примеру...
Как отследить нажатия клавиш на Bluetooth наушниках (гарнитуре) типа: Плей/Пауза, [громкость -], [громкость +], и такой же вопрос касаемо обычных наушников,...
Такие вот делаРугается на последний кусок кода, запускающий игровой процесс