可比自定义排序而不是比较器

时间:2018-02-26 06:10:43

标签: java sorting java-8

当我在Java中搜索Comparable和Comparator接口之间的区别时,大多数时候我得到了Comparator可以用于自定义排序的答案。你能回答以下问题吗? 1)为什么我们不能在自定义排序中使用Comparable而不是Comparator?(最后两者都有比较后返回int的方法。)

注意:请坚持这个问题。我不是在寻找两个接口的定义。

2 个答案:

答案 0 :(得分:0)

Comparable是要订购的类要实现的接口。为了简单起见,您只能使用该接口以一种方式比较实例。

您可以为单个班级实施多个比较器。例如,如果您与人打交道,可以根据出生日期对其进行比较,一个基于他们的姓名等。

答案 1 :(得分:0)

可比较比较器都可以用于自定义排序,但它们的使用存在一些差异。

  • Comparable接口可用于提供一种排序方式 而Comparator接口可用于提供多种方式 排序

  • 对于使用Comparable,Class需要实现它,而对于使用Comparator,我们不需要在类中进行任何更改。

  • 使用Comparable时,我们不需要在客户端进行任何代码更改。 Arrays.sort()或Collections.sort()方法自动使用类的compareTo()方法。 但是,要使用Comparator,客户端需要提供要在compare()方法中使用的Comparator类。

因此,根据上述需求,您可以选择Comparable界面或Comparator界面