首页 > 其他 > 详细

使用lambda表达式对相同属性的实体进行合并

时间:2019-04-29 15:08:13      阅读:1178      评论:0      收藏:0      [点我收藏+]
List<CrmAuthorizedInfo> crmAuthorizedInfos =
                flowPlanInfoMapper.findAllByEncode(stationForm.getOperatorId(), stationIds);

技术分享图片

  • 首先的我数据在很多的属性上都是相同的.
crmAuthorizedInfos.parallelStream()
                    .collect(Collectors.groupingBy(CrmAuthorizedInfo::getStationId, Collectors.toList()))
                    .forEach((k, v) -> {
                        AuthorizedStationInfo authorizedStationInfo = new AuthorizedStationInfo();
                        authorizedStationInfo.setStationId(k);
                        List<AuthorizedPileInfo> authorizedPileInfos = new ArrayList<>();
                        v.parallelStream().collect(Collectors.groupingBy(CrmAuthorizedInfo::getPileId, Collectors.toList())).forEach((k1, v1) -> {
                            AuthorizedPileInfo authorizedPileInfo = new AuthorizedPileInfo();
                            authorizedPileInfo.setPileId(k1);
                            authorizedPileInfo.setGunIds(v1.stream().map(CrmAuthorizedInfo::getGunId).collect(Collectors.toList()));
                            authorizedPileInfos.add(authorizedPileInfo);
                        });
                        authorizedStationInfo.setPileIds(authorizedPileInfos);
                        authorizedStationInfos.add(authorizedStationInfo);
                    });
  • 通过流处理,groupingBy()分组将stationId相同的属性合并.会生成一个(key,value)的maplist.

技术分享图片

  • k是设置的相同电站id,v则是相同k的list集合.然后在对相同stationid下的pile进行分组合并.同样生成了(k,v)的maplist结构.剩下的就是设置属性了.结果就生成了这样的数据.

技术分享图片

使用lambda表达式对相同属性的实体进行合并

原文:https://www.cnblogs.com/lisongyu/p/10790365.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!