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() 比较返回 true 时,应该始终为对象返回 0。

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

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

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

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

相关文章:

java 8 findFirst vs 可选 map

java 按当前日期排序列表,然后按日期比较

java - 使用自定义排序功能实现 Treeset

java - Java 中的 Comparable 和 Comparator 接口(interface)

java - TreeMap put() 静默删除其他条目?

java - 在给定的词典文件中插入新单词而不改变顺序

java - 堆栈交换 oauth 响应不可读

jframe的java缩放

java 8 stream.sorted 集合中的比较器

Java:如何使用compareTo方法检查2个节点的顺序