Встречается на собеседованиях • сегодня

Объекты каких классов нужно использовать в качестве ключа в 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() так, чтобы они зависели только от неизменяемых полей.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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