Java 多电平比较器

Java 多电平比较器,java,comparator,Java,Comparator,请告诉我实现多级比较器的最简单方法: 我有一个employee类,我想通过工资对它们进行比较,这是通过实现一个比较器来实现的: public class SalaryComparator implements Comparator<Employee> { @Override public int compare(Employee o1, Employee o2) { return (int) (o1.getSalary()-o2.getSalar

请告诉我实现多级比较器的最简单方法: 我有一个employee类,我想通过工资对它们进行比较,这是通过实现一个比较器来实现的:

public class SalaryComparator implements Comparator<Employee> {

    @Override
    public int compare(Employee o1, Employee o2) {
        return   (int) (o1.getSalary()-o2.getSalary());
    }
}
公共类SalaryComparator实现Comparator{
@凌驾
公共整数比较(员工o1、员工o2){
return(int)(o1.getSalary()-o2.getSalary());
}
}
现在,如果工资是一样的,我想比较他们的姓氏或ID

我怎么做

谢谢

您可以使用该方法。该方法还简化了这一过程,因此您不必编写自己的类来实现
Comparator

Comparator cmp=new salarycomarator()
.thenComparing(Comparator.comparing(Employee::getLastName))
.thenComparing(Comparator.comparing(Employee::getID));
您甚至可以完全取消您的
SalaryComparator
类:

Comparator cmp=Comparator.comparating(员工::getSalary)
.thenComparing(Comparator.comparing(Employee::getLastName))
.thenComparing(Comparator.comparing(Employee::getID));

如果您的方法返回基元类型(例如,如果
getSalary
返回
double
),请使用该方法而不是
比较
。还有和。

请查看。详细地看一下
Comparator::comparing
Comparator::thenncomparing
。假设工资是
双倍的
浮动的
(否则为什么要强制转换为
int
),强制转换为
int
,这是一个错误,因为它可以将结果舍入到零,当它们不相等时,使它们看起来相等。@kaya3工资是双倍的,methode返回类型是int?!我该如何解决这个问题?@Rami您可以(也应该)使用
Double.compare
函数:但在这种情况下,您根本不需要编写自己的comparator类(如我在回答中所讨论的);如果是为了练习/学习,那么一定要把它作为你自己的课程来写。