程序无法对员工列表进行排序

Program Can't sort Employee List

我正在制作一个 java 程序,该程序使用根据薪水对员工进行排序的流。 程序如下:-

public class EmployeeMain {

    public static void main(String[] args) {

        Employee e1 = new Employee(10000, "Adam");
        Employee e2 = new Employee(5000, "Peter");
        Employee e3 = new Employee(14000, "Robin");

        List<Employee> list = Arrays.asList(e1, e2, e3);

        Collections.sort(list,
                (emp1, emp2) -> e1.getSalary() > e2.getSalary() ? 1 : e2.getSalary() > e1.getSalary() ? -1 : 0);

        list.stream().forEach(System.out::println);
        
    }

}

这段代码的输出是:-

Employee [salary=10000, name=Adam]
Employee [salary=5000, name=Peter]
Employee [salary=14000, name=Robin]

这段代码有什么问题?

您在排序方法的正文中输入错误。 您没有使用 emp1emp2,而是使用了 e1e2,它们是您在上面实例化的员工的实例。

所以基本上你写的东西被评估为:

Collections.sort(list, (emp1, emp2) -> 10000 > 5000 ? 1 : 5000 > 10000 ? -1 : 0)

这是

Collections.sort(list, (emp1, emp2) -> 1)

你要写的是

Collections.sort(list, (emp1, emp2) -> emp1.getSalary() > emp2.getSalary() ? 1 : emp2.getSalary() > emp1.getSalary() ? -1 : 0);

或shorter/better,如评论中所述

list.sort(Comparator.comparingInt(Employee::getSalary));