问题描述
我最近开始学习Java。 我在看可比和比较器。 我读到的区别之一是“当您有一个排序标准时,使用可比较的接口,并且不止一个使用Comparator”。 但是对于可比,我可以使用多个排序标准,如下所示:
class Employee implements Comparable<Employee>{
public int empID;
public int empStartDate;
public int compareTo(Employee empObj){
int result = this.empID - empObj.empID;
if(result == 0){
result = this.empStartDate - empObj.empStartDate;
}
return result;
}
}
我确实了解他们还有其他差异。 但是我有点停留在这种差异上(单项和多项排序标准)。 如果我错了,请纠正我。 如果可以使用上述方法,为什么对单个排序标准建议使用可比性? 有人可以举例说明一下吗? 谢谢!
1楼
如果可以使用上述方法,为什么对单个排序标准建议使用
Comparable
?
没有普遍接受的建议。
无论您在哪里阅读,都错了。
与器根本不是要比较一个值还是多个值。
一个对象最多可以具有一个自然顺序 。
如果是这样,则使用Comparable
实现该自然顺序。
它实际上是用的javadoc编写的:
该接口对实现该接口的每个类的对象强加了总体排序。 该排序称为类的自然排序 ,而该类的
compareTo
方法被称为其自然比较方法 。
无论对象是否具有自然顺序,都可以使用Comparator
来实现(替代)顺序。
两者都没有完成比较的复杂性。
无关:
不要使用整数减法来计算compare
/ compareTo
结果,因为如果两个值相差超过MAX_VALUE
(数字溢出),它将失败。
比较int
值(从Java 7开始可用时始终使用 )。
与 。