使用lambda表達式對相同屬性的實體進行合並
阿新 • • 發佈:2019-04-29
group dal get val pre collect reac 屬性 分享
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表達式對相同屬性的實體進行合並