Встречается на 2% собеседований по Java
Что произойдет при использовании mutable объекта в качестве ключа и изменении его состояния
Использование mutable-объекта в качестве ключа HashMap или HashSet может привести к потере данных и некорректной работе коллекции. При изменении состояния объекта меняется его hashCode(), но коллекция продолжает хранить его в старом бакете, основанном на изначальном хэш-коде. В результате объект становится недостижимым через get(), хотя физически присутствует в мапе.
Пример:
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Рекомендации:
- Используйте только immutable-объекты в качестве ключей (String, Integer и т.д.)
- Если mutable-ключ необходим, убедитесь, что его состояние не меняется после добавления в коллекцию
- Переопределяйте
equals()иhashCode()так, чтобы они зависели только от неизменяемых полей

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы