Java:Comparable vs Comparator

可能重复:
compare()和compareTo()之间的区别
Java:实现Comparable和Comparator有什么区别?

Comparable和Comparator之间的关键区别是什么?

并且在哪些情况下比哪一个更受欢迎?

谢谢

更新 - 以良好的链接与例子!

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


当您的类实现Comparable时,类的compareTo方法将定义该对象的“自然”排序。 该方法在合同中有义务(尽管不是要求)与该对象上的其他方法一致,例如,当.equals()比较返回true时,应始终返回0。

比较器是它自己定义的如何比较两个对象,并可用于比较对象的方式可能不符合自然排序。

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

总之,没有太大的区别。 它们都以类似的方式结束。 一般来说,自然顺序的实现是可比较的(自然顺序定义显然是可以解释的),并为其他排序或比较需求编写一个比较器。


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

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

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

否则,你可以使用Comparable

链接地址: http://www.djcxy.com/p/92187.html

上一篇: Java : Comparable vs Comparator

下一篇: Hashset vs Treeset