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

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

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

谢谢

Updated - GOOD LINK WITH EXAMPLE!!

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

推荐答案

当类实现Comparable时,类的compareTo方法定义该对象的"自然"顺序.根据合同,该方法有义务(尽管不是必需的)与该对象上的其他方法保持一致,例如,当.equals()比较返回true时,应该始终为对象返回0.

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

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

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

Java相关问答推荐

如何专门保存数据而不显示在jTable中?

无法从TemporalAccessor获取Instant:{},ISO解析为2024-04- 25 T14:32:42类型为java.time. form.Parsed

Java SSLocket查明客户端是否发送了证书

Annotation @ Memphier无法正常工作,并表示:class需要一个bean,但找到了2个bean:

参数值[...]与预期类型java.util.Date不匹配

有关手动创建的包的问题

Java .类参数不通过构造函数传递

当我已经安装了其他版本的Java时,如何在Mac OSX 14.3.1上安装Java 6?

我正在try 跟踪数组中最大的两个数字

MySQL数据库中未应用具有Spring数据的唯一约束

如何从Keyloak映射Hibernate实体中的用户

Spring-Boot Kafka应用程序到GraalVM本机映像-找不到org.apache.kafka.streams.processor.internals.DefaultKafkaClientSupplier

内存和硬盘中的Zip不同,这会导致下载后的Zip损坏

buildDir:File!&#的getter解决方案是什么?39.被抛弃

是否在settings.xml中使用条件Maven镜像?

来自外部模块的方面(对于Java+Gradle项目)不起作用

Java.lang.invke.LambdaConversionException:实例方法InvokeVirtual的参数数量不正确

无法将GSON导入到我的JavaFX Maven项目

如何使用外部函数从Java中获取C++ struct 的返回值&;内存API

无泄漏函数的Java DRY