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

Какие элементы являются сравнимыми в HashMap

В HashMap ключи должны быть сравнимыми для корректной работы. Это обеспечивается через методы equals() и hashCode().

  • equals() – определяет логическое равенство объектов.
  • hashCode() – возвращает числовое значение для быстрого поиска в бакетах.

Обязательные условия:

  1. Если a.equals(b) == true, то a.hashCode() == b.hashCode().
  2. Обратное не обязательно (коллизии возможны).

Пример некорректного ключа (нарушает контракт):

java
class BadKey {  
    int id;  
    @Override public boolean equals(Object o) { /*...*/ }  
    // hashCode() не переопределён → возможны ошибки в HashMap  
}  

Исправленный вариант:

java
class GoodKey {  
    int id;  
    @Override public boolean equals(Object o) { /*...*/ }  
    @Override public int hashCode() { return id; } // Консистентно с equals()  
}  

Если ключи неизменяемые (например, String, Integer), это идеально, так как их хеш-код кешируется.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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