比较器与比较器

可能的复制品:
比较()和比较()之间的区别
Java: 实现 Compaable 和 Compaator 之间有什么区别?

比较器和比较器之间的关键区别是什么。

在什么情况下,哪一种方法比另一种方法更好?

谢谢

更新-与示例的良好链接! !

Http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html

182535 次浏览

Comparator提供了一种方法,可以为无法控制的类型提供自定义比较逻辑。

Comparable允许您指定如何比较您正在实现的对象。

显然,如果您不能控制一个类(或者您想提供多种方法来比较您能控制的对象) ,那么使用 Comparator

否则,您可以使用 Comparable

当您的类实现 可比的时,该类的 compareTo方法正在定义该对象的“自然”顺序。该方法在契约上有义务(尽管不是必需的)与该对象上的其他方法保持一致,例如,当 .equals()比较返回 true 时,应该始终为对象返回0。

比较器自己定义了如何比较两个对象,并且可以用来比较对象,这种方式可能与自然顺序不一致。

例如,字符串通常按字母顺序进行比较。因此,"a".compareTo("b")将使用字母比较。如果要比较字符串的长度,则需要编写一个自定义比较器。

简而言之,没有太大的区别。它们都是类似手段的目的。一般实现对自然顺序进行比较,(自然顺序的定义显然是开放的解释) ,并编写一个比较器用于其他排序或比较需要。