Java合并ArrayList最常用方式是addAll()方法,直接追加元素并修改原集合;也可新建集合实现不可变合并;需确保泛型兼容,去重可用LinkedHashSet。

Java 中合并两个不同的 ArrayList 集合,最常用、最直接的方式是使用 addAll() 方法。它会将第二个集合的所有元素追加到第一个集合末尾,操作简单且效率高。
用 addAll() 直接追加(推荐)
这是最常见也最实用的方式。注意:该方法会**修改原集合**,即第一个 ArrayList 会被改变。
- 确保目标集合(调用方)是可变的(非
Collections.unmodifiableList等只读集合) - 不需要返回新集合,原地合并,节省内存
- 示例:
ArrayList<String> list1 = new ArrayList<>(Arrays.asList("a", "b"));
ArrayList<String> list2 = new ArrayList<>(Arrays.asList("c", "d"));
list1.addAll(list2); // list1 变为 ["a", "b", "c", "d"]
创建新集合合并(不修改原集合)
如果需要保留两个原始集合不变,可以新建一个 ArrayList,再分别添加两个源集合的内容。
- 适合函数式风格或不可变场景
- 构造时传入一个集合,再用
addAll()加另一个 - 示例:
ArrayList<String> list1 = new ArrayList<>(Arrays.asList("a", "b"));
ArrayList<String> list2 = new ArrayList<>(Arrays.asList("c", "d"));
ArrayList<String> merged = new ArrayList<>(list1);
merged.addAll(list2); // merged = ["a", "b", "c", "d"],list1 和 list2 不变
合并不同泛型类型?需注意类型兼容性
两个 ArrayList 要能合并,它们的元素类型必须兼容(例如同为 String,或存在继承关系)。
立即学习“Java免费学习笔记(深入)”;
- 若类型不同(如
ArrayList<String>和ArrayList<Integer>),编译不通过 - 若想混合存储,可声明为
ArrayList<Object>或使用通配符(但需谨慎处理类型安全) - 不建议强行用
raw type(如ArrayList)绕过泛型检查,容易引发运行时异常
去重合并(如需合并并去重)
如果希望合并后自动去除重复元素,可用 LinkedHashSet 保持插入顺序:
- 先加入所有元素,自动去重,再转回
ArrayList - 示例:
ArrayList<String> list1 = new ArrayList<>(Arrays.asList("a", "b"));
ArrayList<String> list2 = new ArrayList<>(Arrays.asList("b", "c"));
List<String> mergedUnique = new ArrayList<>(
new LinkedHashSet<>(Stream.concat(list1.stream(), list2.stream())
.collect(Collectors.toList()))
);
// 结果:["a", "b", "c"]


















