Встречается на 10% собеседований по Java
Как устроена HashMap
HashMap в Java реализована как массив бакетов (корзин), где каждый бакет — это связный список (или дерево, если элементов много). При добавлении пары ключ-значение:
- Вычисляется хэш-код ключа (через
hashCode()). - На основе хэша определяется индекс бакета (обычно
hash % capacity). - Если бакет пуст — элемент добавляется. Если нет — происходит проверка на совпадение ключей (через
equals()). При совпадении значение перезаписывается, иначе элемент добавляется в список/дерево.
Пример:
java
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1); // Хэш "apple" -> индекс бакета -> сохранение
map.put("banana", 2);При достижении определенного порога заполнения (по умолчанию 75%) HashMap увеличивает capacity и перехеширует все элементы. В Java 8+ при большом количестве коллизий списки преобразуются в сбалансированные деревья для улучшения производительности.
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы