Страницы

Поиск по вопросам

вторник, 2 апреля 2019 г.

Найти хэш-таблицу в HashMap

Начав исследовать такое явление как hash-таблица, я понял, что это некий массив, каждая ячейка которого хранит список, который параметризован двумя типами: ключ и значение.
Когда я залез в исходники HashMap, то увидел следующее:
transient Node[] table;
Если я все правильно понял, и это и есть хеш-таблица, то почему тогда это одномерный массив? Или я что-то не то нашел, и это не она?


Ответ

Представленный Вами массив является основой для хранения хэш-таблицы.
Но кроме этого, каждый элемент такого массива (bucket) содержит ссылку на первый элемент linked list (JDK 7 и ранее), либо ссылку на первый элемент linked list/ссылку на корневой узел balanced tree (JDK 8).
В linked list, либо в balanced tree находятся пары, которые попали в одну и ту же корзину.
Пример для связного списка:

Таким образом и хранится эта хэш-таблица.

Комментариев нет:

Отправить комментарий