准备工作,新建一个User类

lambda中sorted排序_System

 

使用stream排序操作(默认ASC排序)

stream倒序排序操作


sorted(Comparator.reverseOrder())


lambda中sorted排序_System_02

代码例子:

/**
* lambda
* sorted排序
*/
@Test
public void test19() {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(11);
list.add(111);
list.add(9);
List<Integer> collect = list.stream().sorted().collect(Collectors.toList());
collect.forEach(System.out::println);
System.out.println("********");

List<Integer> reverseOrder = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
reverseOrder.forEach(System.out::println);
}

 

操作对象中属性的排序

lambda中sorted排序_System_03

List<User> user = new ArrayList<>();
user.add(new User(1L, 18, "小明"));
user.add(new User(2L, 20, "小王"));
user.add(new User(3L, 28, "小刚"));
user.add(new User(4l, 25, "小丽"));
List<User> collect1 = user.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
collect1.forEach(e -> {
System.out.println(JSON.toJSONString(e));
});
System.out.println("***************");
List<User> collect2 = user.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
collect2.forEach(e -> {
System.out.println(JSON.toJSONString(e));
});

 

先按照age排序,age相同时按照id排序

lambda中sorted排序_List_04

//先按照age排序,age相同时按照id排序
List<User> collect3 = user.stream().sorted(Comparator.comparing(User::getAge).thenComparing(User::getId)).collect(Collectors.toList());
collect3.forEach(e -> {
System.out.println(JSON.toJSONString(e));
});