繁体   English   中英

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

[英]Java Sorting Objects using Comparable with more than one sorting criteria

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

没有普遍接受的建议。

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


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

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

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

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

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


无关:

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

比较int值(从Java 7开始可用Integer.compare(x, y)Integer.compare(x, y)始终使用Integer.compare(x, y) )。 Long.compare​(x, y)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM