Java : 可比 vs 比较器

2022-08-31 07:24:42

可能的Replications:
compare()和compareTo()
Java之间的差异:实现Compaable和Compolarator有什么区别?

可比和比较器之间的主要区别是什么?

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

谢谢

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

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


答案 1

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

比较器是它自己对如何比较两个对象的定义,可用于以可能与自然排序不一致的方式比较对象。

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

简而言之,没有太大的区别。它们是类似手段的两个目的。一般实现自然顺序的可比性,(自然顺序定义显然可以解释),并编写一个比较器用于其他排序或比较需要。


答案 2

Comparator提供了一种方法,用于为无法控制的类型提供自定义比较逻辑。

Comparable允许您指定如何比较要实现的对象。

显然,如果您无法控制某个类(或者您希望提供多种方法来比较您确实可以控制的对象),请使用 。Comparator

否则,您可以使用 。Comparable


推荐