Метод equals() в Java сравнивает два объекта на равенство.
По умолчанию, в базовом классе Object, реализация equals() эквивалентна оператору ==, то есть он проверяет, ссылаются ли две переменные на один и тот же объект в памяти.
Однако, для многих пользовательских классов, таких как строки (String) или коллекции, этот метод переопределяется, чтобы сравнивать объекты по их содержимому (логическое равенство), а не по ссылкам.
При переопределении equals(), необходимо соблюдать следующие характеристики:
x, x.equals(x) должно возвращать true.x и y, x.equals(y) должно возвращать true тогда и только тогда, когда y.equals(x) возвращает true.x, y и z, если x.equals(y) возвращает true и y.equals(z) возвращает true, то x.equals(z) должно возвращать true.x и y, многократные вызовы x.equals(y) должны последовательно возвращать true или последовательно возвращать false, при условии отсутствия изменения информации, используемой в сравнениях equals, на любом из объектов.x, x.equals(null) должно возвращать false.Важно также, что при переопределении equals(), всегда необходимо переопределять и метод hashCode(), так как они тесно связаны. Если два объекта считаются равными согласно equals(), их хэш-коды, возвращаемые hashCode(), должны быть одинаковыми.
Пример переопределения equals() для простого класса:
java