本文主要是介绍合并多个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中的属性值的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!