Страницы

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

пятница, 26 апреля 2019 г.

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

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


Ответ

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

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

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