已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
21小时前关门了。
此帖子在14小时前编辑并提交审查。
Improve this question
假设我们有以下Employees列表:
List<Employee> employeeList = new ArrayList<>();
employeeList.add(new Employee(40000d, "Abhijeet","Rakshit"));
employeeList.add(new Employee(30000d, "Sunil","Sawant"));
employeeList.add(new Employee(20000d, "Abhijeet", "Ranade"));
employeeList.add(new Employee(40000d, "Srikanth", "Ranka"));
我想按first name
排序,如果相等,按last name
排序,然后按salary
排序。
2条答案
按热度按时间pkwftd7m1#
使用一个比较器和
list.sort
方法。只有在前面的比较返回equal时才调用后续的thenComparing
调用。我更喜欢姓氏而不是薪水作为决胜局。如果需要,它们可以交换。印刷品
w1jd8yoj2#
**在下面的类中有两种方法。一种使用stream.sorted,另一种是list.sort方法。
1.当您不想修改原始集合,同时又想使用像collect或filter这样的流操作时,第一种方法会很有用。
1.第二种方法速度更快,并且始终会修改原始列表**
Sort by Name Output
name : Abhijeet Rakshit
name : Abhijeet Ranade
name : Srikanth Ranka
name : Sunil Sawant
name : Abhijeet Ranade Salary :20000.0
name : Sunil Sawant Salary :30000.0
name : Abhijeet Rakshit Salary :40000.0
name : Srikanth Ranka Salary :40000.0
name : Abhijeet Rakshit Salary :40000.0
name : Abhijeet Ranade Salary :20000.0
name : Srikanth Ranka Salary :40000.0
name : Sunil Sawant Salary :30000.0
```