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

Можно ли потерять объект в HashMap

Да, объект может быть "потерян" в HashMap в нескольких случаях:

  1. Изменение ключа после добавления: Если изменяется поле ключа, используемое в hashCode(), HashMap не сможет его найти. Пример:
java
Map<Key, String> map = new HashMap<>();
Key key = new Key("a"); // hashCode зависит от поля "a"
map.put(key, "value");
key.setField("b"); // изменили поле -> hashCode изменился
map.get(key); // вернет null, так как ищет по новому hashCode
  1. Плохая реализация hashCode(): Если hashCode возвращает константу, все элементы попадут в одну корзину, что резко снизит производительность.

  2. Утечка памяти: Если ключи больше не используются, но остаются в HashMap (например, как ключи в статической мапе), это может привести к утечке памяти.

Для избежания проблем ключи HashMap должны быть:

  • Неизменяемыми (immutable)
  • Иметь правильные реализации hashCode() и equals()
  • Не храниться дольше необходимого
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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