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

Какие классы использовать в качестве ключа в HashMap, чтобы объекты не терялись

Лучше использовать неизменяемые (immutable) классы в качестве ключей в HashMap. Это гарантирует, что хэш-код ключа не изменится после добавления в мапу.

Основные требования для ключа:

  1. Правильно переопределенные equals() и hashCode()
  2. Неизменяемость (или как минимум неизменяемость полей, участвующих в equals/hashCode)

Хорошие кандидаты:

  • String
  • Integer, Long и другие обертки примитивов
  • Собственные immutable классы

Пример плохого ключа (мутабельный):

java
class BadKey {
    int id;
    // equals/hashCode используют поле id
    
    public void setId(int id) { this.id = id; }
}

BadKey key = new BadKey();
key.setId(1);
map.put(key, "value");
key.setId(2); // ключ "потеряется" в мапе
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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