Stream流进行排序有两个方法:
- 无参-以自然序排序一个list(自然顺序即使用Comparable 接口的 compareTo 方法进行比较):
list.stream().sorted()
- 以自然序逆序排序,Comparator 提供了reverseOrder() 方法:
list.stream().sorted(Comparator.reverseOrder())
- 以某字段排序-使用Comparator 的comparing()来排序:
list.stream().sorted(Comparator.comparing(Student::getAge))
- reversed()可把上面的元素逆序:
list.stream().sorted(Comparator.comparing(Student::getAge).reversed())
- 多字段排序-thenComparing():举一个两字段排序的,如果大于2字段,继续追加thenComparing()排序即可
list.stream().sorted(Comparator.comparing(Student::getAge).thenComparing(Student::getName).reversed())
注:如果忘记参数是什么可以点击源码看下sorted()的实现,就知道传什么参数了