多级比较器

问题描述 投票:0回答:1

[请您告诉我实现多层比较器的最简单方法:我有一个雇员班,我想按薪水比较他们,这是通过实现一个比较器来完成的:

public class SalaryComparator implements Comparator<Employee> {

    @Override
    public int compare(Employee o1, Employee o2) {
        return   (int) (o1.getSalary()-o2.getSalary());
    }
}

现在,如果工资相同,我想按姓氏或ID进行比较

我该怎么办?

谢谢

java comparator
1个回答
1
投票

您可以使用Comparator.thenComparing方法。 Comparator.thenComparing方法也简化了此过程,因此您不必编写自己的实现Comparator.comparing的类:

Comparator.comparing

您甚至可以完全消除Comparator类:

Comparator<Employee> cmp = new SalaryComparator()
    .thenComparing(Comparator.comparing(Employee::getLastName))
    .thenComparing(Comparator.comparing(Employee::getID));

[如果您的方法返回原始类型(例如,如果SalaryComparator返回Comparator<Employee> cmp = Comparator.comparing(Employee::getSalary) .thenComparing(Comparator.comparing(Employee::getLastName)) .thenComparing(Comparator.comparing(Employee::getID)); ),请使用例如getSalary方法而不是double。也有comparingDoublecomparingDouble

© www.soinside.com 2019 - 2024. All rights reserved.