【发布时间】:2018-03-22 12:05:46
【问题描述】:
我想按字母顺序对我的ArrayList 进行排序。因此我写了一个sortEmployees 方法。 如果我的员工有相同的姓名,我想根据他们的薪水对其进行排序,这意味着应该首先打印出薪水较高的员工。
好吧,我成功地按字母顺序对它们进行了排序,但是我不知道如何比较,如果员工有相同的姓名,如果是这种情况,则应打印薪水较高的员工。 谢谢。
ArrayList<Employee> employees = new ArrayList<Employee>();
public void sortEmployees(){
Collections.sort(employees, (p1, p2) -> p1.name.compareTo(p2.name));
for(Employee employee: employees){
System.out.println("ID: " + employee.ID + END_OF_LINE + "Name: "+employee.name + END_OF_LINE + "Salary: " + employee.grossSalary);
System.out.println(""); // just an empty line
}
}
【问题讨论】:
-
你快到了。修改比较器,如果
compareTo()不为零,则使用此值,否则比较薪水并使用该值。 -
对不起,我不太明白。你介意用代码告诉我吗?
-
Comparator.comparing(e -> e.name).thenComparingInt(e -> e.grossSalary)