Я неоднократно слышал о том, что рекомендуют при переопределении метода equals переопределять и hashCode. Но так рекомендуют, что вроде и не откажешь.
Есть ли какое-то соглашение о том, что если я переопределяю equals, то и hashCode тоже обязан переопределять, а в противном случае код не будет считаться корректным? Или это просто рекомендация?
Ответ
Если Вы переопределите equals(...), но не переопределите hashCode(), то в некоторых случаях Ваша программа будет вести себя некорректно.
В частности это проявляется для объектов, которые являются ключами в HashMap
Если объекты равны, то и их хэш-коды должны быть равны.
Комментариев нет:
Отправить комментарий