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"]
</string></string>
创建新集合合并(不修改原集合)
如果需要保留两个原始集合不变,可以新建一个 ArrayList,再分别添加两个源集合的内容。
OpenJDK 24 Windows x64 官方参考实现(24+36),适合 Windows 环境进行 Java 开发、编译、运行和版本兼容性验证。
- 适合函数式风格或不可变场景
- 构造时传入一个集合,再用
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 不变
</string></string></string>
合并不同泛型类型?需注意类型兼容性
两个 ArrayList 要能合并,它们的元素类型必须兼容(例如同为 String,或存在继承关系)。
- 若类型不同(如
ArrayList<string></string>和ArrayList<integer></integer>),编译不通过 - 若想混合存储,可声明为
ArrayList<object></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"]
</string></string></string>
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










