Java:用于确定等价的外部类?

Java有一个Comparator用于提供类本身外部对象的比较,以允许进行有序比较的多种/替代方法。

但是,进行无序比较的唯一标准方法是覆盖类中的equals()

当我想在课堂外提供多个/备用无序比较时,我该怎么办? (明显的用例是根据特定属性将集合划分为等价类。)

假设最终用途是无序检查(例如不用于排序或索引),是否可以实现仅检查相等性的Comparator ,如果两个对象相等则返回0,并且当两个对象时返回值!= 0是不平等的? ( 注意 :我没有跳过这个解决方案的唯一原因是,从技术上讲,它可以通过不提供满足传递性和对称性的关系来破坏Comparator的合同。)

似乎应该有一个EqualsComparator标准类或类似的东西。

(番石榴会处理这样的事吗?)

是的,Guava具有Equivalence接口和Equivalences类(在Guava版本14.0中删除)。

(是的,这非常有用的,而且在Java中很缺乏。我们真的应该为HashMapHashSet等提供选择……)

虽然Comparator在某些情况下可能没问题,但它不提供对基于散列的集合很重要的hashCode方法。

Interesting Posts