🧠 Если вы хотите переопределить equals(), какие условия должны выполняться?



- Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;



- Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.



- Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;



- Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.



-Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.



На картинкее приведен пример, по которому все будет понятно, также не надо забывать, что при переопределении метода equals() необходимо переопределить метод hashCode().



@javatg