使⽤lambda表达式对相同属性的实体进⾏合并
List<CrmAuthorizedInfo> crmAuthorizedInfos =
flowPlanInfoMapper.OperatorId(), stationIds);
⾸先的我数据在很多的属性上都是相同的.
crmAuthorizedInfos.parallelStream()
.upingBy(CrmAuthorizedInfo::getStationId, List()))
.forEach((k, v) -> {
AuthorizedStationInfo authorizedStationInfo = new AuthorizedStationInfo();
authorizedStationInfo.setStationId(k);
List<AuthorizedPileInfo> authorizedPileInfos = new ArrayList<>();
v.parallelStream().upingBy(CrmAuthorizedInfo::getPileId, List())).forEach((k1, v1) -> {
AuthorizedPileInfo authorizedPileInfo = new AuthorizedPileInfo();
authorizedPileInfo.setPileId(k1);
authorizedPileInfo.setGunIds(v1.stream().map(CrmAuthorizedInfo::getGunId).List()));
authorizedPileInfos.add(authorizedPileInfo);
});
authorizedStationInfo.setPileIds(authorizedPileInfos);
authorizedStationInfos.add(authorizedStationInfo);
字段字符串去重复});
通过流处理,groupingBy()分组将stationId相同的属性合并.会⽣成⼀个(key,value)的maplist.
k是设置的相同电站id,v则是相同k的list集合.然后在对相同stationid下的pile进⾏分组合并.同样⽣成了(k,v)的maplist结构.剩下的就是设置属性了.
结果就⽣成了这样的数据.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论