Java имеет Comparator<T>
для обеспечения сравнения объектов, внешних по отношению к самому классу, для обеспечения нескольких / альтернативных методов выполнения упорядоченных сравнений.
Но единственный стандартный способ неупорядоченных сравнений - это переопределить equals()
в классе.
Что мне делать, если я хочу предоставить несколько/ альтернативные неупорядоченные сравнения, внешние по отношению к классу? (Очевидный вариант использования - разбиение коллекции на классы эквивалентности на основе определенных свойств.)
Предполагается, что конечное использование предназначено для неупорядоченной проверки (например, не для сортировки или индексации).), когда-нибудь нормально реализовать Comparator<T>
, который просто проверяет равенство, возвращая 0, если два объекта равны, и значение! = 0, если два объекта неравны?( примечание : единственная причина, по которой я не использую это решение, заключается в том, что технически он может нарушить контракт для Comparator
, не предоставив отношения, удовлетворяющего транзитивности и симметрии.)
Кажется, должен был быть EqualsComparator<T>
стандартный класс или что-то в этом роде.
(Guava обрабатывает что-нибудь подобное?)