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

Какая реализация бакета в HashMap

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

  • Связный список: при коллизиях элементы добавляются в список.
  • Красно-черное дерево: если размер бакета превышает TREEIFY_THRESHOLD (8), список конвертируется в дерево для улучшения производительности (O(n) → O(log n)).

Пример:

java
static class Node<K,V> implements Map.Entry<K,V> {
    final int hash;
    final K key;
    V value;
    Node<K,V> next; // для связного списка
}

При resize() бакеты перераспределяются по новому массиву (обычно в 2 раза больше).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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