Использование метода equals() в интерфейсе компаратора?

equals() доступен для всех классов коллекции java из класса Object. Этот метод также объявляется в интерфейсе Comparator, так что же цель объявления этого метода в компараторе? в каком случае он используется и как?

Ответ 1

Какова цель объявления этого метода в Компараторе?

Я думаю, что дизайнерский способ подчеркнуть тот факт, что Comparator.equals() накладывает некоторые дополнительные требования на любые классы, реализующие интерфейс:

Кроме того, этот метод может возвращать true только в том случае, если указанный объект также является компаратором и налагает тот же порядок, что и этот компаратор. Таким образом, comp1.equals(comp2) означает, что sgn(comp1.compare(o1, o2))==sgn(comp2.compare(o1, o2)) для каждой ссылки на объект o1 и o2.

Этот метод может быть использован для определения того, налагают ли два отдельных компаратора один и тот же порядок.

Ответ 2

Я думаю, что основная причина заключается в том, чтобы дать понять, что метод equals предназначен для тестирования самого Comparator. Это очевидно, когда вы думаете об этом, но могу ли я предположить, что некоторые люди могут ожидать, что equals(Object) (каким-то образом) будет семантически связан с методом compare(T, T).

Он также позволяет документировать некоторые правила здравого смысла, когда два компаратора можно рассматривать как равные.

В любом случае наличие метода equals(Object) в интерфейсе предназначено исключительно для целей документирования.

Ответ 3

Из javadoc

Обратите внимание, что всегда безопасно не, чтобы переопределить Object.equals(Object). Однако переопределение этого метода может в некоторых случаях улучшить производительности, позволяя программам определять, что два разных компараторы налагают один и тот же порядок.

Идея состоит в том, чтобы позволить вам не сортировать коллекцию, которая уже была отсортирована другим компаратором, если вы понимаете, что конечный результат будет таким же.

Как правило, это было мало пользы, но при сортировке очень больших коллекций это то, что вы, возможно, захотите изучить.

Ответ 4

- когда объявляющий компаратор сравнивается с другим объектом (аргументом)

Ответ 5

Это просто переопределенная форма метода Object equals, позволяющая вам знать, имеют ли два объекта один и тот же тип компаратора.

Ответ 6

По вашему вопросу я думаю, что он используется для сравнения объектов после преобразования в строку. Методы класса eqlas класса chek оба объекта являются eqls или нет. Компонент использует данные объекта chek, такие как Hello.eqlas( "hello" )