Я знаю, что есть много похожих вопросов, но я не удовлетворен ответами, которые я прочитал. Я попытался понять это, но я до сих пор не понял. Я знаю, что эти два важны при использовании наборов или карт, особенно HashSet, HashMap или Hash-объектов вообще, которые используют хеш-механизм для хранения объектов-элементов.В чем заключается недостаток переопределения равных, а не хэш-код и наоборот?
Оба метода используются для проверки того, являются ли два объекта равными или нет. Для того чтобы два объекта A и B были равны сначала, они должны иметь одинаковое значение хэша (должны находиться в одном и том же ковше), а во-вторых, мы должны получить значение true при выполнении A.equals (B).
То, что я не понимаю, ПОЧЕМУ, необходимо переопределить оба этих метода. ЧТО, если мы не переопределяем hashcode. ЭТО ДОЛЖНО ПЕРЕСМОТРЕТЬ ОБА. Если это не то, что является недостатком переопределения равных, а не хэш-кода и наоборот.
Вы посмотрели [Какие проблемы следует учитывать при переопределении равных и hashCode в Java?] (Http://stackoverflow.com/questions/27581/what-issues-should-be-considered-when-overriding-equals- и-хэш-в-Java/27609 # 27609). Вообще говоря, существует контрактное требование, чтобы любой объект, который является «равным», также создает один и тот же «hashcode» – MadProgrammer