Методы equals и hashCode в Java используются для корректного сравнения объектов и работы с коллекциями, основанными на хэш-таблицах (например, HashMap, HashSet).
equals(Object o): Определяет, эквивалентен ли текущий объект другому объекту. По умолчанию сравнивает ссылки на объекты. Переопределяется для сравнения внутреннего состояния объектов.
hashCode(): Возвращает целочисленное значение (хэш-код) объекта. Используется коллекциями для быстрого поиска элементов. Должен быть согласован с equals: если два объекта равны по equals, их хэш-коды должны быть одинаковы. Обратное утверждение неверно.
Неправильное или отсутствие переопределения этих методов может привести к некорректному поведению при использовании объектов в коллекциях, таких как отсутствие объекта в Set после добавления или невозможность найти объект в HashMap по ключу.
Пример переопределения:
java