Введение в хэш-карты 0:00 Хэш-карты создаются в памяти кучи JVM. JVM создает 16 сегментов для хранения элементов. Если хэш-карта заполнена более чем на 75%, её ёмкость удваивается.
Ведра и связанный список 1:34 Ведро хэш-карты представляет собой связанный список. Узел связанного списка содержит данные и указатель на следующий узел. Узлы добавляются в связанный список один за другим.
Добавление пары ключ-значение 4:06 Хэш-карта используется для хранения пар ключ-значение. JVM получает хэш-код ключа и вычисляет индекс корзины. Если ключ уже присутствует в корзине, происходит коллизия хэшей.
Коллизия хэшей 6:36 Коллизия хэшей возникает, если ключ уже присутствует в корзине. JVM проверяет, существует ли ключ, и заменяет существующий узел. Хэш-карты не могут содержать дубликаты ключей.
Метод get 10:23 Метод get возвращает значение очень быстро. JVM находит хэш-код ключа и индекс корзины. Если ключ найден, возвращается пара ключ-значение.
Проблемы с хэш-картой 13:31 Хэш-карта не должна содержать несколько узлов в одной корзине. При наличии нескольких узлов в корзине производительность снижается. В Java 8 разработчики улучшили хэш-карту, чтобы повысить производительность.
Преобразование в дерево 15:00 При достижении определенного порога узлов связанный список преобразуется в дерево. Порог называется "три-пять". Дерево используется для повышения производительности при поиске элементов.
Пример работы дерева 15:56 Дерево хранит элементы в порядке возрастания или убывания. Пример: узлы с целыми значениями 1, 4, 6, 2, 7, 3, 5, 1. Дерево позволяет быстро находить нужные узлы, избегая перебора всех узлов.
Преимущества дерева 16:48 Дерево позволяет JVM быстро находить нужные узлы. JVM использует метод compareTo для сравнения объектов. Дерево также называется красно-черным деревом и деревом бинарного поиска.
Заключение 18:25 При достижении порога узлов связанный список преобразуется в дерево. JVM использует метод compareTo для сравнения объектов. В следующем видео будут рассмотрены практические вопросы по хэш-карте и контракт equals и метод хэш-кода.