Встречается на 2% собеседований по Java

Как устроена структура данных в HashMap

HashMap в Java хранит данные в виде массива Node<K,V>[], где каждый элемент (бакет) может содержать связанный список или дерево (в Java 8+ при большом количестве коллизий).

Основные моменты:

  1. Хеширование: ключи преобразуются в хеш (через hashCode()), который определяет бакет.
  2. Коллизии: если хеши совпадают, элементы добавляются в список/дерево в одном бакете.
  3. Динамическое расширение: при достижении loadFactor (по умолчанию 0.75) размер массива удваивается, и элементы перераспределяются.

Пример:

java
HashMap<String, Integer> map = new HashMap<>();
map.put("a", 1);  // Хеш "a" определяет бакет
map.put("b", 2);  // Если хеш совпадает с "a", будет коллизия

Важно:

  • Ключи должны правильно реализовывать hashCode() и equals().
  • В Java 8+ при длине списка > 8 он преобразуется в красно-черное дерево для оптимизации поиска.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы