Отношение эквивалентности, реализуемое методом equals(), должно обладать следующими свойствами (согласно спецификации Java):
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) должен постоянно возвращать один и тот же результат, при условии, что никакая информация, используемая в сравнениях equals, в любой из объектов не была изменена.x, x.equals(null) должно возвращать false.Эти свойства гарантируют корректное поведение коллекций (например, Set и Map), алгоритмов сортировки и других структур данных и операций, опирающихся на понятие эквивалентности объектов. Если эти свойства нарушены, может возникнуть непредсказуемое и некорректное поведение программ.