合并多个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;
}
标签:DemoDtoTemp,map,List,合并,formDto,key,o1,属性 来源: https://www.cnblogs.com/cdlyy/p/16064746.html