可能的重复:
compare() 和 compareTo()
之间的区别 Java:实现 Comparable 和 Comparator 有什么区别?
Comparable 和 Comparator 之间的主要区别是什么。
在什么情况下哪个比另一个更受欢迎?
谢谢
更新 - 与示例的良好链接!
http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html
可能的重复:
compare() 和 compareTo()
之间的区别 Java:实现 Comparable 和 Comparator 有什么区别?
Comparable 和 Comparator 之间的主要区别是什么。
在什么情况下哪个比另一个更受欢迎?
谢谢
更新 - 与示例的良好链接!
http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html
当您的类实现Comparable时,compareTo
该类的方法正在定义该对象的“自然”顺序。.equals()
该方法在合同上有义务(尽管没有要求)与该对象上的其他方法保持一致,例如当比较返回 true时,应始终为对象返回 0 。
Comparator是它自己对如何比较两个对象的定义,可用于以可能不符合自然顺序的方式比较对象。
例如,字符串通常按字母顺序进行比较。因此"a".compareTo("b")
将使用字母比较。如果您想比较字符串的长度,则需要编写一个自定义比较器。
简而言之,没有太大区别。它们都是类似手段的目的。通常为自然顺序实现可比较(自然顺序定义显然可以解释),并为其他排序或比较需求编写比较器。
Comparator
为您提供了一种为您无法控制的类型提供自定义比较逻辑的方法。
Comparable
允许您指定如何比较您正在实现的对象。
显然,如果您无法控制某个类(或者您想提供多种方法来比较您确实可以控制的对象),请使用Comparator
.
否则你可以使用Comparable
.