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

Что будет если использовать мутабельный объект в виде ключа

Если использовать мутабельный объект как ключ в HashMap или HashSet, это может привести к потере доступа к значению. При изменении объекта меняется его hashCode(), но коллекция продолжает хранить его в старой корзине (bucket). Пример:

java
Map<MutableKey, String> map = new HashMap<>();
MutableKey key = new MutableKey(1);
map.put(key, "value");

key.setId(2); // Изменили hashCode ключа
System.out.println(map.get(key)); // null - не найдёт

Проблемы:

  1. Потеря значения при изменении ключа
  2. Нарушение контракта equals/hashCode (объект должен оставаться постоянным)
  3. Утечки памяти (старые ключи остаются в коллекции)

Решение: Используйте только иммутабельные объекты (String, Integer и т.д.) в качестве ключей.

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

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

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

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