一尘不染

Java:可比与比较器

java

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

在什么情况下,哪个比另一个优先?


阅读 302

收藏
2020-03-04

共1个答案

一尘不染

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

一个比较本身就是如何比较两个对象的定义,可用于可能不与自然顺序排列的方式来比较的对象。

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

简而言之,没有太大区别。它们都是相似手段的目的。在一般情况下,可实现与自然顺序可比的实现(自然顺序定义显然可以接受解释),并为其他排序或比较需求编写比较器。

2020-03-04