单个list集合数据合并

在一个list中,存放了多条实体数据,

存在a字段和b字段相同的数据,要求合并其中a字段和b字段相同的数据,并对c,d字段累加

实现方式如下:

  1. 使用groupingBy方法,以a字段和b字段为key,将list分组
  2. 使用map方法,对每个分组进行操作
  3. 在map中,先对其他字段进行累加操作,然后将累加结果设置回PdmSasBaseModel对象中
  4. 最后使用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());
    

### Java 中多个 List 合并的方式 在 Java 编程中,当面临需要将多个 `List` 进行合并的需求时,存在多种方式来完成这一目标。其中一种高效的方法是利用流(Stream API),这不仅简化了代码逻辑还提高了可读性和性能。 #### 使用 Stream API 实现多 List 合并 借助于 Java 8 引入的 Stream API 可以轻松地把多个 `List<T>` 转换成单一的 `List<T>` 。具体做法如下: 1. 将各个独立的 `List` 放置在一个容器里形成一个新的列表; 2. 对该新列表应用 stream() 方法转换为流形式; 3. 利用 flatMap 函数展开内部每一个子 list单个元素序列; 4. 经过 collect(Collectors.toList()) 操作收集最终的结果集。 下面是具体的实现例子[^1]: ```java import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; public class MergeListsExample { public static void main(String[] args) { // 创建三个不同类型的列表 List<Integer> numbers1 = Arrays.asList(1, 2); List<Integer> numbers2 = Arrays.asList(3, 4); List<Integer> numbers3 = Arrays.asList(5, 6); // 定义一个包含上述所有列表的大列表 List<List<Integer>> listOfNumbers = Arrays.asList(numbers1, numbers2, numbers3); // 使用stream api 和 flatmap 来合并这些列表 List<Integer> mergedList = listOfNumbers.stream() .flatMap(Collection::stream) .collect(Collectors.toList()); System.out.println("Merged List: " + mergedList); // 输出 Merged List: [1, 2, 3, 4, 5, 6] } } ``` 此段程序展示了如何通过 Stream API 高效而简洁地完成了多个整数型 `List` 的合并工作。值得注意的是,在实际开发过程中还可以根据业务需求调整参数或者加入过滤条件等额外功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值