1.List分组统计数量
Map<Integer, Long> collect = list.stream().collect(Collectors.groupingBy(User::getDept, Collectors.counting()));
2.List分组转成Map<key,List<实体>>
Map<Integer, List<User>> collect = list.stream().collect(Collectors.groupingBy(User::getDept));
3.List分组转成Map<key,List<实体.属性>>
Map<Integer, List<String>> xmUserMap = list.stream().collect(Collectors.groupingBy(User::getDept,Collectors.mapping(User::getName,Collectors.toList())));
4.过滤
// 过滤用户年龄大于20的用户
List<User> userFliterList = list.stream().filter(a -> a.getAge()>20).collect(Collectors.toList());
5.List转Map
Map<Long, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, a -> a,(k1,k2)->k1));
6.排序
//单字段排序,根据id排序
userList.sort(Comparator.comparing(User::getId));
//多字段排序,根据id,年龄排序
userList.sort(Comparator.comparing(User::getId).thenComparing(User::getAge));
// 不存在空值问题
userList.sort(Comparator.comparing(User::getId,Comparator.nullsLast(Comparator.naturalOrder())).thenComparing(User::getAge,Comparator.nullsLast(Comparator.naturalOrder())));
7.去重
List<Long> idList = new ArrayList<Long>();
idList.add(1L);
idList.add(1L);
idList.add(2L);
List<Long> distinctIdList = idList.stream().distinct().collect(Collectors.toList());
8.使用实体某个字段重新组装List
List<Long> userIdList = userList.stream().map(a -> a.getId()).collect(Collectors.toList());