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
。
上一篇: Java : Comparable vs Comparator
下一篇: Hashset vs Treeset