java - 比较器为什么声明等于?

  显示原文与译文双语对照的内容
0 0

Comparator接口都有自己的 equals()方法。 任何类都将获得 equals()缺省情况下,通过Object类。 有什么需要 equals()在接口方法里面呢?

时间:原作者:9个回答

0 0

Comparator完善的合同。 Object.equals: 它必须满足规定的约束。 Object.equals之后又在

此外,此方法也可能返回true,仅当指定的对象也是一个comparator,并且强行排序与此comparator相同。 因此, comp1.equals(comp2)意味着, sgn(comp1.compare(o1, o2))==sgn(comp2.compare(o1, o2))对于每个对象引用 o1o2.

声明一个 equals里面 Comparator便于你记录这种形式的java doc 。

请注意,这里的API也作为协定的文献,所以不仅仅是化妆品。 这是显式代码的其他代码和值得信赖的限制性因素。

在类似情况下你可以使用更少的建立方法,同时也可能是记录一个intent 。 我如果不包含了, Interface.method应该在这里,不管自己的超类接口如何演进。

原作者:
0 0

从Java 凭证等,之所以 Comparator拥有独自的 equals()方法:

However,重写此方法可能在某些情况下,提高性能通过允许程序确定两个不同的comparator施加相同的顺序。

原作者:
0 0

docs

始终是安全不要覆盖Object .equals( Object ) 。 但是,五月重写此方法,在某些情况下,提高性能通过允许程序确定两个不同的comparator会执行顺序相同。

原作者:
0 0

加入一个Object方法在接口中声明的声明允许Javadoc了等于实现该接口的类中都需要有意义。

原作者:
0 0

读取其 java doc 。 它的存在只是为了解释 equals()如果你选择在类中重写此方法必须返回实现Comparator 。 你或许觉得没有比较器可以等于任何其他,但这不是重点。 你可以认为两个comparator相等如果它们返回任何参数,但这不是这种情况也是如此。 java doc说明了这两个comparator相等如果他们会执行相同的命令,不管给定的参数。 Javadoc还说,

请注意,它也始终是安全而不是重写Object .equals( Object )

大多数情况下,不要重写 equals()在比较器。

原作者:
0 0

从技术上讲,此方法是多余的声明( 编译器不关心),但是- -

声明这个接口中的equals方法使其调用方和不同Comparators之间 协定的一部分并允许specify/extend其语义。

它指定两个Comparators相等时才会执行相同的命令与其compare( ) 方法。 此扩展的语义Object .equals( ),因此,必须在接口中所述。

原作者:
0 0

equals()中的方法 Comparator是用户提供强制实施 Comparator要实现的接口 equals()通过一些附加规则及约束除了规则上已应用 equals()fROM Object.

新增的规则是:

此方法必须遵守的常规协定 Object .equals( Object ) 。 此外,此方法也可能返回true,仅当指定的对象也是一个comparator,并且强行排序与此comparator相同。 因此,comp1 .equals( comp2 ) 意味着 sgn( comp1 .compare( o1,o2 ) ) ==sgn( comp2 .compare( o1,o2 ) ) 每个对象引用 o1o2

原作者:
0 0
Comparator interface have their own equals() method

好吧。 首先,应该明确,每次实现Comparable ӿ决定两个对象相等时,则应该向程序更少或更高版本。

I am quite confuse about have equals() inside Comparator. Any class will get equals() by default through Object class.

u 从Object类继承equals( ) 方法实现只检查这两个referances指向相同的对象到底有没有用。 它dos不适用任何比较。 你才会提供在类中( 也可以在你对象Interface ) 的条件是等价的。

Then what is need to have equals() method inside an interface?

很明显,每次实现对象时相等时,大于则必须在更短。 因此,而不是依赖默认Object equals( ) 方法则应该向逻辑来检查相等性

原作者:
...