在Collection框架中, 我知道Comparable提供单一排序序列 而 比较器提供多个排序顺序 但我无法理解一个界面如何修改原始数据而另一个界面没有?
答案 0 :(得分:2)
Comparable
没有做任何事情,它是一个界面。它强制你的对象实现方法" compareTo'。这允许将对象与另一个对象进行比较。
https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html
Comparator
没有做任何事情,它是另一个界面。它强制您的对象实施方法'比较'。这允许对象比较两个其他对象。注意区别:要比较和比较。
https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html
此链接非常非常好地解释了对象排序接口。有例子和一切。 https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html
答案 1 :(得分:0)
Comparable只能在原始类上实现,因此只能有一个实现(除非您使用子类覆盖compareTo)。同时,不需要在原始类上实现Comparator,因此可以有很多实现。
您的第二种情况与第一种情况有很大不同,因为compare可以访问三个Dog实例(this,参数#1和参数#2),而compareTo只能访问两个Dog实例(this和参数#1)。