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

Почему изменяемые ключи в Map могут привести к ошибкам

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

Пример:

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

key.setValue("modified"); // Изменяем ключ
System.out.println(map.get(key)); // Может вернуть null

Решение:

  • Используйте неизменяемые объекты (String, Integer и т. д.) в качестве ключей.
  • Если нужен изменяемый ключ, убедитесь, что он не изменяется после добавления в Map.
  • Переопределяйте hashCode() и equals() корректно, если создаёте свои классы для ключей.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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