最常用、最高效的方式是调用 addAll() 方法,它支持一次性添加另一个集合(如 List、Set)中的所有元素,目标 ArrayList 调用 addAll(Collection c) 即可完成批量添加。

Java 中 ArrayList 批量添加多个元素,最常用、最高效的方式是调用 addAll() 方法,它支持一次性添加另一个集合(如 List、Set)中的所有元素。
使用 addAll() 添加另一个集合
这是最标准的做法。目标 ArrayList 调用 addAll(Collection extends E> c),把整个集合追加到末尾:
- 要求传入的是
Collection子类型(如ArrayList、Arrays.asList()、LinkedList等) - 元素类型需与目标 ArrayList 泛型兼容,否则编译报错
- 添加顺序与源集合迭代顺序一致
示例:
List<String> list = new ArrayList<>();
list.addAll(Arrays.asList("a", "b", "c")); // 一次加三个
list.addAll(List.of("x", "y", "z")); // Java 9+,不可变列表转为批量添加
用 Collections.addAll() 添加可变参数
如果已有多个独立变量或数组,不想先封装成 List,可用静态工具方法 Collections.addAll():
立即学习“Java免费学习笔记(深入)”;
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 第一个参数是目标 ArrayList,后面是可变参数(varargs)
- 比先创建临时 List 再 addAll() 更简洁,尤其适合字面量场景
- 注意:不能传 null 数组,否则抛
NullPointerException
示例:
List<Integer> nums = new ArrayList<>(); Collections.addAll(nums, 10, 20, 30, 40); // 直接加四个整数
初始化时直接批量添加(构造阶段)
如果是在创建 ArrayList 的同时填充数据,推荐用 Arrays.asList() 或 List.of() 作为构造参数:
-
new ArrayList(Arrays.asList(...))—— 兼容老版本,内容可修改 -
new ArrayList(List.of(...))—— Java 9+,更简洁;List.of()返回不可变列表,但传给 ArrayList 构造器后新列表是可变的
示例:
List<String> fruits = new ArrayList<>(Arrays.asList("apple", "banana", "orange"));
// 或 Java 9+
List<String> colors = new ArrayList<>(List.of("red", "green", "blue"));
避免低效写法:别用循环反复调用 add()
虽然语法正确,但手动 for 循环逐个 add 多个元素会多次触发扩容判断,影响性能(尤其数量大时):
- ArrayList 默认容量是 10,超过会自动扩容(约 1.5 倍),频繁扩容带来额外数组复制开销
- 若已知要加 N 个元素,可先
ensureCapacity(N)预分配空间,再循环 add;但不如直接 addAll() 简洁高效
不推荐:
// ❌ 不必要地低效
for (String s : new String[]{"p", "q", "r"}) {
list.add(s);
}

















