java : Comparable vs Comparator

标签 java comparator comparable

Possible Duplicates:
difference between compare() and compareTo()
Java: What is the difference between implementing Comparable and Comparator?

Comparable 和 Comparator 之间的主要区别是什么。

在什么情况下哪个比另一个更受欢迎?

谢谢

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

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

最佳答案

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

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

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

简而言之,没有太大区别。它们都是类似手段的目的。通常为自然顺序实现可比较(自然顺序定义显然可以解释),并为其他排序或比较需求编写比较器。

关于 java : Comparable vs Comparator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4108604/

相关文章:

java - 使用比较器对列表进行错误排序

java - 如何按内存位置对集合中的对象进行排序?

java - 根据路径检索值的查找库

java - 我应该使用终结器来解锁或释放任何线程锁或其他资源吗?

java - 为什么 Collections.sort 使用相同的参数调用 Comparator 两次?

java - 使用扫描器比较和字符串

java - 有没有办法实例化一个可比较的数组,只是建立它的长度

java - 应用程序类 'java.lang.String.substring:1339' Websphere Liberty 引发的异常

java - 使用 Scala 或 Java 进行 Base 64 编码

c# - 奇怪的可空比较行为