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

Можно ли добавлять изменяемые объекты в качестве ключа в HashMap

Да, можно, но это крайне не рекомендуется. Ключи в HashMap должны быть неизменяемыми (immutable), так как изменение ключа после добавления в HashMap нарушает работу структуры данных.

Проблема:

  • HashMap использует hashCode() ключа для определения корзины (bucket), куда поместить пару ключ-значение.
  • Если ключ изменяется после добавления, его hashCode() может измениться, и HashMap не сможет его найти при последующем поиске.

Пример:

java
Map<MutableKey, String> map = new HashMap<>();
MutableKey key = new MutableKey("initial");
map.put(key, "value");
key.setValue("changed"); // Изменяем ключ
System.out.println(map.get(key)); // null – ключ потерян

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

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

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

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

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