1.获取list<Object>中的某个属性并过滤非空,然后返回一个属性的list:
List<Long> ids = userLoginLogList.stream().map(User::getId).filter(d -> d !=null ).collect(Collectors.toList());
2.//取出所有id,并且不为null【Objects::nonNull】,并且去除重复【distinct()】
List<Integer> userIdList = userInfoList.stream().map(UserInfo::getId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
Collectors.groupingBy
:
可以看到有三个参数,第一个参数就是key的Function了,第二个参数是一个map工厂,也就是最终结果的容器,一般默认的是采用的HashMap::new,最后一个参数很重要是一个downstream,类型是Collector,也是一个收集器,那就是说,这三个参数其实就是为了解决分组问题的:
第一个参数:分组按照什么分类
第二个参数:分组最后用什么容器保存返回
第三个参数:按照第一个参数分类后,对应的分类的结果如何收集
其实一个参数的Collectors.groupingBy方法的 ,第二个参数默认是HashMap::new, 第三个参数收集器其实默认是Collectors.toList
3.List<String> 转String字符串并且以逗号分隔,并且转大写【map(String::toUpperCase)
】,去重复【distinct()
】.
String joinStr= strList.stream().filter(Objects::nonNull).distinct().map(String::toUpperCase).collect(Collectors.joining(","));
4.List<Map> mapList; 排序后分组:
Map<String, List<Map<String, Object>>> integerListMap = mapList.stream().sorted(Comparator.comparing(d -> d.get("id").toString())).collect(Collectors.groupingBy(d -> d.get("id").toString(), LinkedHashMap::new, Collectors.toList()));
网友评论