Соблюдение контракта hashCode при переопределении equals важно, потому что многие коллекции в Java, такие как HashMap и HashSet, используют хэш-коды для оптимизации поиска и сравнения объектов. 1
Если не переопределить метод hashCode(), то объекты, которые равны согласно методу equals(), могут быть распределены по разным ячейкам хэш-таблицы, что приведёт к неправильной работе коллекций. 1
Кроме того, некорректная реализация equals() и hashCode() может вызвать коллизию: два объекта, которые не равны с точки зрения equals(), будут иметь одинаковый хэш-код. 2 Это сильно снижает производительность, так как таблице приходится работать с перебором «дубликатов». 2
Таким образом, соблюдение контракта hashCode помогает гарантировать корректную и эффективную работу приложений. 2