当前位置: 代码迷 >> java >> Java分类对象使用Comparable并具有多个分类标准
  详细解决方案

Java分类对象使用Comparable并具有多个分类标准

热度:52   发布时间:2023-07-16 17:53:08.0

我最近开始学习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;
    }
}

我确实了解他们还有其他差异。 但是我有点停留在这种差异上(单项和多项排序标准)。 如果我错了,请纠正我。 如果可以使用上述方法,为什么对单个排序标准建议使用可比性? 有人可以举例说明一下吗? 谢谢!

如果可以使用上述方法,为什么对单个排序标准建议使用Comparable

没有普遍接受的建议。

无论您在哪里阅读,都错了。


与器根本不是要比较一个值还是多个值。

一个对象最多可以具有一个自然顺序 如果是这样,则使用Comparable实现该自然顺序。 它实际上是用的javadoc编写的:

该接口对实现该接口的每个类的对象强加了总体排序。 该排序称为类的自然排序 ,而该类的compareTo方法被称为其自然比较方法

无论对象是否具有自然顺序,都可以使用Comparator来实现(替代)顺序。

两者都没有完成比较的复杂性。


无关:

不要使用整数减法来计算compare / compareTo结果,因为如果两个值相差超过MAX_VALUE (数字溢出),它将失败。

比较int值(从Java 7开始可用时始终使用 )。 与 。

  相关解决方案