在一个list中,存放了多条实体数据,
存在a字段和b字段相同的数据,要求合并其中a字段和b字段相同的数据,并对c,d字段累加
实现方式如下:
- 使用groupingBy方法,以a字段和b字段为key,将list分组
- 使用map方法,对每个分组进行操作
- 在map中,先对其他字段进行累加操作,然后将累加结果设置回PdmSasBaseModel对象中
- 最后使用collect方法将操作结果收集到一个新的List中
List<PdmSasBaseModel> pdmSasBaseModelList = new LinkedList<>(); List<PdmSasBaseModel> resultList = pdmSasBaseModelList.stream() .collect(Collectors.groupingBy(model -> model.getA() + model.getB())) .values() .stream() .map(list -> list.stream() .reduce((model1, model2) -> { model1.setC(model1.getC() + model2.getC()); model1.setD(model1.getD() + model2.getD()); // ... 对其他字段进行累加操作 return model1; }).get()) .collect(Collectors.toList());