Встречается на 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-классы) в качестве ключей.

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