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

2022/3/27 23:24:53

本文主要是介绍合并多个List,合并List中的属性值,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

如果要对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;
    }


这篇关于合并多个List,合并List中的属性值的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程