java8新特性–Stream流常用总结
总结一下最近需求里常用到的stream()写法,方便下次使用的时候直接查看
1.根据某个字段去重
ArrayList<Statistics> statisticsArrayList1 = statisticsList1.stream()
.collect(Collectors.collectingAndThen
(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(Statistics::getObject))), ArrayList::new));
2.根据某个字段分组并排序
TreeMap<Long, List<CfRoleJurisdictionConfigModel>> groupIdMapRoleModel = roleJurisdictionConfigModels.stream().collect(Collectors.groupingBy(CfRoleJurisdictionConfigModel::getGroupId,TreeMap::new,Collectors.toList()));
3.提取某个字段list集合
List<Long> allIds = contOrgTagArticleMaps.stream().map(ContOrgTagArticleMap::getArticleId).collect(Collectors.toList());
4.根据某个字段过滤
List<ContOrgArticle> originArticleList = articleList.stream()
.filter(item -> Objects.nonNull(item.getOriginArticleId()) && item.getOriginArticleId()>0)
.collect(Collectors.toList());
5.List转map
Map<Long,ContOrgArticle> articleMap = articleList.stream().collect(Collectors.toMap(ContOrgArticle::getId, Function.identity()));
6.List<List> ----> List
List<List<IncentivePersonTaskVO>> personTaskList
List<model> personTaskVOS = personTaskList.stream().flatMap(list -list.stream()).collect(Collectors.toList());