Java中多个List合并

本文介绍了一个简单的Java程序示例,展示了如何将两个List合并为一个。通过使用addAll方法,可以轻松地将一个List的内容添加到另一个List中,最终通过遍历合并后的List并打印每个元素来验证操作的有效性。


天猫内部优惠券

开发中需要用到list合并,之前没用过,记录一下,


import java.util.ArrayList;
import java.util.List;
import Bean.Entity;
public class SumList {

    public static void SumList() {
	List<Entity> rs = new ArrayList<Entity>();
	List<Entity> rs2 = new ArrayList<Entity>();
	Entity en;

	for (int i = 0; i < 3; i++) {
	    en = new Entity();
	    en.setId("rs---" + i);

	    rs.add(en);
	}
	for (int i = 0; i < 4; i++) {
	    en = new Entity();
	    en.setId("rs2---" + i);

	    rs2.add(en);
	}

	rs.addAll(rs2);
	for (int i = 0; i < rs.size(); i++) {
	    
	    System.out.println(rs.get(i).getId());
	    
	}
    }

    public static void main(String[] args) {
	SumList();
    }
}



运行结果:

rs---0
rs---1
rs---2
rs2---0
rs2---1
rs2---2
rs2---3

### 合并两个 List 的方法 在 Java合并两个 `List` 是一种常见的集合操作,尤其在处理多个数据源时。根据不同的需求(如是否需要去重、保留顺序等),可以采用多种方式实现这一目标。 #### 1. 使用 `addAll()` 方法合并两个 List 最基础且直接的方式是使用 `ArrayList` 的 `addAll()` 方法将一个列表的元素全部添加到另一个列表中: ```java List<String> listA = Arrays.asList("a", "b", "c"); List<String> listB = Arrays.asList("d", "e", "f"); List<String> mergedList = new ArrayList<>(listA); mergedList.addAll(listB); ``` 此方法适用于不需要去重的场景,并保持原始顺序[^4]。 #### 2. 使用 Java 8 的 Stream API 合并两个 List Java 8 引入了强大的 Stream API,可以通过 `Stream.concat()` 或 `Stream.of().flatMap()` 来合并两个列表: ```java List<String> mergedList = Stream.concat(listA.stream(), listB.stream()) .collect(Collectors.toList()); ``` 或者使用 `flatMap`: ```java List<String> mergedList = Stream.of(listA, listB) .flatMap(List::stream) .collect(Collectors.toList()); ``` 这种方式代码简洁,适合函数式编程风格[^4]。 #### 3. 使用 Guava 库合并两个 List Google 的 Guava 提供了便捷的工具类来合并列表,例如 `Iterables.concat()`: ```java List<String> mergedList = Lists.newArrayList(Iterables.concat(listA, listB)); ``` Guava 在处理不可变集合和迭代器时表现出色,适合需要高性能和简洁代码的场景[^4]。 #### 4. 使用 Apache Commons Collections 合并两个 List Apache Commons Collections 提供了 `ListUtils.union()` 方法用于合并两个列表: ```java List<String> mergedList = ListUtils.union(listA, listB); ``` 此方法适用于已有 Apache Commons 依赖的项目,简化了集合操作[^4]。 #### 5. 合并并去重 如果希望合并两个列表后去除重复项,可以借助 `HashSet` 实现自动去重: ```java Set<String> set = new HashSet<>(listA); set.addAll(listB); List<String> mergedList = new ArrayList<>(set); ``` 这种方式会丢失原始顺序,若需保留顺序,则应使用 `LinkedHashSet`[^5]。 #### 6. 合并并指定保留某个列表的重复项 在某些场景下,可能希望合并两个列表并保留其中一个列表中的重复项。此时可以使用 `retainAll()` 方法结合 `Stream` 过滤: ```java listA.retainAll(listB); // 保留 listA 和 listB 中相同的元素 List<String> mergedList = Stream.concat(listA.stream(), listB.stream()) .distinct() .collect(Collectors.toList()); ``` 此方法确保最终列表中不包含重复项,同时保留指定列表中的重复数据[^2]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值