На чём основан HashMap, что из себя представляют бакеты?

Здраствуйте, вопрос вроде простой, но внятный ответ найти не смог. И так: из коллекций Java я усвоил, что они основываются либо на массивах, либо на взаимоссылках. Всё понятно. Про HM везде объяснение начинается с "вот есть бакеты/корзины"..."которые хранят пару ключ-значение"..."вот есть несколько бакетов"... и т.д. Что из себя представляет бакет (объект с полями К-З, массив, лист?)? Как хранятся эти бакеты (Массив бакетов, лист бакетов?)? Вот в общем и весь вопрос. Дальше про механизм работы мне всё понятно. Спасибо!


Ответы (2 шт):

Автор решения: Денис Кондратов

Всё разобрался, бакеты - это ячейки в обычном массиве которые представляют собой линклисты(с переходом в дерево при определенных условиях). Т.е. хэшмап, упрощённо, массив линклистов.

→ Ссылка
Автор решения: pazukdev
  • Да, правильно, массив бакетов
  • Но в бакетах не LinkedList, а односвязанный список, в котором есть ссылки только на next node
  • Односвязанный список меняется на красно-черное бинарное дерево при достижении количества его элементов 8 (TREEIFY_THRESHOLD = 8) и обратно при уменьшении кол-ва элементов до 6 (UNTREEIFY_THRESHOLD = 6)
→ Ссылка