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

Что произойдет при вставке элемента c null значением, если такая пара уже была добавлена в HashMap и hashCode возвращает константу, а equals возвращает true

При вставке пары с null-значением в HashMap, где уже существует такая пара (ключ совпадает по equals и hashCode), произойдет перезапись значения. HashMap разрешает null-ключи и null-значения. Если hashCode возвращает константу, все элементы попадут в одну корзину (bucket), что ухудшит производительность до O(n).

Пример:

java
Map<Key, String> map = new HashMap<>();
Key key1 = new Key(); // hashCode() -> 1, equals() -> true
Key key2 = new Key(); // hashCode() -> 1, equals() -> true

map.put(key1, "value1");
map.put(key2, null); // перезапишет "value1" на null
System.out.println(map.size()); // 1
System.out.println(map.get(key1)); // null

Важно: ключи считаются одинаковыми, если equals() возвращает true, независимо от hashCode.

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

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

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

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