ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

合并多个List,合并List中的属性值

2022-03-27 22:01:05  阅读:201  来源: 互联网

标签:DemoDtoTemp map List 合并 formDto key o1 属性


如果要对List中的对象进行唯一值属性去重,属性求和:
1.key唯一
       List<DemoDto> result = list.stream().collect(Collectors.toMap(DemoDto :: getId, a->a, (o1,o2)->{
            o1.setWhCode(o1.getWhCode()+o2.getWhCode());
            o1.setAreaCode(o1.getAreaCode() + o2.getAreaCode());
            o1.setRegionCode(o1.getRegionCode() + o2.getRegionCode());
            return o1;
        })).values().stream().collect(Collectors.toList());
2.key由多个字段组合而成

/**
* 实现list对象的属性合并(key是组合的键,多个字段拼接)
* @param list
* @return
*/
public List<DemoDto> mergeList(List<DemoDto> list){
Map<String, DemoDto> map = new HashMap<>();
for(DemoDto formDto : list){
String key = formDto.get1Code() + "_" + formDto.get2Code() + "_" + formDto.get3Code();
if ( map.containsKey(key)){
DemoDto DemoDtoTemp = map.get(key);
DemoDtoTemp.setA(DemoDtoTemp.getA() + formDto.getA());
DemoDtoTemp.setB(DemoDtoTemp.getB() + formDto.getB());
DemoDtoTemp.setC(DemoDtoTemp.getC() + formDto.getC());
map.put(key, DemoDtoTemp);
}else {
map.put(key,formDto);
}
}
      //将map转成List
List<DemoDto> result = map.values().stream().collect(Collectors.toList());
return result;
}

标签:DemoDtoTemp,map,List,合并,formDto,key,o1,属性
来源: https://www.cnblogs.com/cdlyy/p/16064746.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有