[请您告诉我实现多层比较器的最简单方法:我有一个雇员班,我想按薪水比较他们,这是通过实现一个比较器来完成的:
public class SalaryComparator implements Comparator<Employee> {
@Override
public int compare(Employee o1, Employee o2) {
return (int) (o1.getSalary()-o2.getSalary());
}
}
现在,如果工资相同,我想按姓氏或ID进行比较
我该怎么办?
谢谢
您可以使用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
。也有comparingDouble
和comparingDouble
。