在比较器接口中使用equals()方法?

时间:2012-02-29 11:20:52

标签: java

equals()方法可用于Object类的所有Java集合类。此方法也在Comparator接口中声明,那么在Comparator中声明此方法的目的是什么?在哪种情况下使用它以及如何使用?

6 个答案:

答案 0 :(得分:10)

  

在Comparator中声明此方法的目的是什么?

我认为这是设计师强调Comparator.equals()在实现接口的任何类上强加一些additional requirements这一事实的方式:

  

此外,仅当指定的对象也是比较器并且它与此比较器施加相同的顺序时,此方法才能返回true。因此,comp1.equals(comp2)表示每个对象引用sgn(comp1.compare(o1, o2))==sgn(comp2.compare(o1, o2))o1 o2

该方法可用于确定两个不同的比较器是否施加相同的顺序。

答案 1 :(得分:5)

我认为主要原因是要明确equals方法用于测试 Comparator本身。当你想到它时,这是显而易见的,但我能想象有些人可能期望equals(Object)(以某种方式)与compare(T, T)方法在语义上相关。

它还允许记录一些常识指南,以确定何时可以将两个比较器视为相等。

无论哪种方式,界面中equals(Object)方法的存在 仅用于文档目的。

答案 2 :(得分:4)

来自javadoc

  

请注意 始终 安全 以覆盖Object.equals(Object)。   但是,在某些情况下,覆盖此方法可能会有所改善   通过允许程序确定两个不同的性能   比较器强制执行相同的命令。

如果您意识到最终结果是相同的,那么这个想法就是允许您不对已经由另一个比较器排序的集合进行排序。

通常它几乎没有用处,但是在对非常大的集合进行排序时,您可能需要查看它。

答案 3 :(得分:0)

- 将声明的比较器与另一个Object(参数)进行比较

答案 4 :(得分:0)

它只是Object的equals方法的一种过度形式,让你知道两个对象是否是相同的比较器类型。

答案 5 :(得分:-2)

根据你的问题,我认为它用于在字符串中转换后比较对象。 对象类eqlas方法chek这两个对象是否是eqls和Competres方法chek对象数据如Hello.eqlas(“hello”)