Встречается на собеседованиях • сегодня
Объекты каких классов нужно использовать в качестве ключа в HashMap, чтобы их не терять
Лучше использовать в качестве ключей в HashMap неизменяемые (immutable) классы, такие как String, Integer, LocalDate и другие.
Почему?
- Хэш-код ключа используется для определения бакета в
HashMap. - Если ключ изменяется после добавления в
HashMap, его хэш-код может измениться, и он станет недоступен (lost).
Пример плохого ключа (изменяемый):
java
class MutableKey {
private int id;
public MutableKey(int id) { this.id = id; }
public void setId(int id) { this.id = id; }
@Override
public int hashCode() { return id; }
@Override
public boolean equals(Object o) { /*...*/ }
}
// Проблема:
MutableKey key = new MutableKey(1);
map.put(key, "Value");
key.setId(2); // Теперь ключ "потерян" в HashMapРешение:
- Используй
finalполя в ключах (String,Integer). - Либо переопределяй
hashCode()иequals()так, чтобы они зависели только от неизменяемых полей.

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