可用addAll()或Stream合并多个集合:addAll()直接追加元素,Stream支持链式操作与过滤;预设ArrayList容量可提升性能;去重或排序需额外处理。

直接用 addAll() 方法就能把多个小集合合并到一个大集合里,不需要手动遍历。
用 addAll() 一次性合并多个集合
创建一个空的 ArrayList 作为目标大集合,然后对每个小集合调用 addAll():
- 确保目标集合是
ArrayList或其他支持addAll()的List实现 - 每个小集合可以是
ArrayList、LinkedList、甚至数组转成的List(如Arrays.asList()) - 顺序调用
addAll(),元素会按添加顺序追加进去
示例:
List<String> list1 = Arrays.asList("a", "b");
List<String> list2 = Arrays.asList("c", "d");
List<String> list3 = Arrays.asList("e");
List<String> merged = new ArrayList<>();
merged.addAll(list1);
merged.addAll(list2);
merged.addAll(list3);
// 结果:["a", "b", "c", "d", "e"]
用 Java 8 Stream 合并(适合函数式风格)
如果偏好链式操作或需要去重、过滤等处理,可以用 Stream.of().flatMap():
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
立即学习“Java免费学习笔记(深入)”;
-
Stream.of(list1, list2, list3)把多个集合变成流 -
flatMap(Collection::stream)展开每一层集合 -
collect(Collectors.toList())收集成新的ArrayList
示例:
List<String> merged = Stream.of(list1, list2, list3)
.flatMap(Collection::stream)
.collect(Collectors.toList());
注意容量和性能的小细节
如果合并的元素总数已知,提前设置初始容量能避免多次扩容:
- 构造时传入预估总大小:
new ArrayList<>(list1.size() + list2.size() + list3.size()) - 这样内部数组只分配一次,比默认容量(10)+动态扩容更高效
- 尤其在合并大量小集合时,这点优化明显
合并后是否要去重或排序?
addAll() 和 Stream 合并都保留原始顺序和重复项。如需去重,可转成 LinkedHashSet 再转回 ArrayList;如需排序,合并后再调用 Collections.sort() 或 stream().sorted().collect()。

















