当我在Java中搜索Comparable和Comparator接口之间的区别时,大多数时候我得到了Comparator可以用于自定义排序的答案。你能回答以下问题吗? 1)为什么我们不能在自定义排序中使用Comparable而不是Comparator?(最后两者都有比较后返回int的方法。)
注意:请坚持这个问题。我不是在寻找两个接口的定义。
答案 0 :(得分:0)
Comparable是要订购的类要实现的接口。为了简单起见,您只能使用该接口以一种方式比较实例。
您可以为单个班级实施多个比较器。例如,如果您与人打交道,可以根据出生日期对其进行比较,一个基于他们的姓名等。
答案 1 :(得分:0)
可比较和比较器都可以用于自定义排序,但它们的使用存在一些差异。
Comparable
接口可用于提供一种排序方式
而Comparator
接口可用于提供多种方式
排序
对于使用Comparable
,Class需要实现它,而对于使用Comparator
,我们不需要在类中进行任何更改。
使用Comparable
时,我们不需要在客户端进行任何代码更改。 Arrays.sort()或Collections.sort()方法自动使用类的compareTo()方法。
但是,要使用Comparator
,客户端需要提供要在compare()方法中使用的Comparator
类。
因此,根据上述需求,您可以选择Comparable
界面或Comparator
界面