java8用法

1.获取list中的某个属性并过滤非空,然后返回一个属性的list:

List ids = userLoginLogList.stream().map(User::getId).filter(d -> d !=null ).collect(Collectors.toList());

2.//取出所有id,并且不为null【Objects::nonNull】,并且去除重复【distinct()】

List 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字符串并且以逗号分隔,并且转大写【map(String::toUpperCase)】,去重复【distinct()】.

String joinStr= strList.stream().filter(Objects::nonNull).distinct().map(String::toUpperCase).collect(Collectors.joining(","));

4.List mapList; 排序后分组:

Map>> integerListMap = mapList.stream().sorted(Comparator.comparing(d -> d.get("id").toString())).collect(Collectors.groupingBy(d -> d.get("id").toString(), LinkedHashMap::new, Collectors.toList()));

你可能感兴趣的:(java8用法)