Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

Обязательно ли при переопределении equals переопределять и hashCode?

#java


Я неоднократно слышал о том, что рекомендуют при переопределении метода equals переопределять
и hashCode. Но так рекомендуют, что вроде и не откажешь.

Есть ли какое-то соглашение о том, что если я переопределяю equals, то и hashCode
тоже обязан переопределять, а в противном случае код не будет считаться корректным?
Или это просто рекомендация?
    


Ответы

Ответ 1



Если Вы переопределите equals(...), но не переопределите hashCode(), то в некоторых случаях Ваша программа будет вести себя некорректно. В частности это проявляется для объектов, которые являются ключами в HashMap. Если объекты равны, то и их хэш-коды должны быть равны.

Ответ 2



Для поддержания общего договора - равные объекты должны иметь одинаковый хеш-код

Комментариев нет:

Отправить комментарий