Встречается на собеседованиях • сегодня
Какие знаешь правила связи equals и hashCode
Связь между equals и hashCode регулируется контрактом в Java:
- Если два объекта равны по
equals, ихhashCodeдолжен быть одинаковым. Обратное не обязательно. - Если
hashCodeразный, объекты гарантированно не равны поequals. - Если
hashCodeодинаковый, объекты могут быть равны или нет (коллизия).
Пример нарушения контракта:
java
class BadKey {
int id;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
BadKey badKey = (BadKey) o;
return id == badKey.id;
}
// Нет hashCode() - нарушение!
}Такие объекты будут некорректно работать в HashSet/HashMap. Всегда переопределяйте оба метода согласованно!

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