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