##对象去重
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| List<User> userList = new ArrayList<User>(); userList.add(new User("小黄",10)); userList.add(new User("小红",23)); userList.add(new User("小黄",78)); userList.add(new User("小黄",10));
//根据name属性去重 List<User> unique1 = userList.stream().collect( Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getName))), ArrayList::new));
System.out.println(unique1.toString());
//根据name,age属性去重 List<User> unique2 = userList.stream().collect( Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> { return o.getName() + "," + o.getAge(); }))), ArrayList::new));
System.out.println(unique2.toString());
|
##大小排序
1 2 3 4 5 6 7 8
| //升序(默认) list = list.stream() .sorted(Comparator.comparing(Person::getAge)) .collect(Collectors.toList()); //降序 list = list.stream() .sorted(Comparator.comparing(Person::getAge).reversed()) .collect(Collectors.toList());
|
##排序有空值
1 2 3 4 5 6 7 8 9 10 11 12
| //方式一:排序(按【创建时间】升序排列) //如果创建时间有为空的就会报错 list = list.stream().sorted(Comparator.comparing(Person::getCreatetime)) .collect(Collectors.toList());
//方式二:排序(按【创建时间】升序排列) //nullsLast方法表示如果创建时间为空就排列到最后面 list = list.stream().sorted(Comparator.comparing(t -> t.getCreatetime(), Comparator.nullsLast(Date::compareTo))) .collect(Collectors.toList()); //nullsFirst方法表示如果创建时间为空就排列到最前面 list = list.stream().sorted(Comparator.comparing(t -> t.getCreatetime(), Comparator.nullsFirst(Date::compareTo))) .collect(Collectors.toList());
|
##多字段组合排序
1 2 3
| //今日待跟踪(多字段组合排序) list = list.stream().sorted(Comparator.comparing(Person::getAge).thenComparing(Comparator.comparing(Person::getCreatetime, Comparator.nullsLast(Date::compareTo)))) .collect(Collectors.toList());
|