在比较器接口中使用equals()方法?
equals()
方法可用于Object
类中的所有java集合类。 此方法也在Comparator
接口中声明,那么在Comparator
中声明此方法的目的是什么? 在哪种情况下使用它以及如何使用?
在Comparator中声明此方法的目的是什么?
我认为这是设计者强调Comparator.equals()
对实现接口的任何类强加一些额外要求这一事实的方式:
此外,仅当指定的对象也是比较器并且它与此比较器施加相同的顺序时,此方法才能返回
true
。 因此,comp1.equals(comp2)
意味着每个对象引用o1
和o2
sgn(comp1.compare(o1, o2))==sgn(comp2.compare(o1, o2))
。
该方法可用于确定两个不同的比较器是否施加相同的顺序。
我认为主要原因是要明确equals
方法是用于测试Comparator
本身 。 当你想到它时,这是显而易见的,但我能想象有些人可能期望equals(Object)
与(某种程度上)在语义上与compare(T, T)
方法相关。
它还允许记录一些常识性指南,以便将两个比较器视为平等。
无论哪种方式,接口中equals(Object)
方法的存在仅用于文档目的。
来自javadoc
请注意, 不要覆盖Object.equals(Object) 始终是安全的。 但是,在某些情况下,通过允许程序确定两个不同的比较器强加相同的顺序,覆盖此方法可以提高性能。
如果您意识到最终结果是相同的,那么这个想法就是允许您不对已经由另一个比较器排序的集合进行排序。
通常它几乎没有用处,但是在对非常大的集合进行排序时,您可能需要查看它。
– 将声明比较器与另一个Object(参数)进行比较时
它只是Object的equals方法的一种过度forms,让你知道两个对象是否具有相同的比较器类型。
根据你的问题,我认为它用于在字符串转换后比较对象。 对象类eqlas方法chek这两个对象是否是eqls和Competres方法chek对象数据,如Hello.eqlas(“hello”)