最推荐的方式是 new ArrayList(Arrays.asList(arr)),它生成真正可增删的 ArrayList;Arrays.asList() 返回固定大小的内部类,直接增删会抛 UnsupportedOperationException;基本类型数组需先 boxed 再收集。

普通数组转 ArrayList 最常用、最推荐的方式是用 Arrays.asList(),但要注意它返回的不是 java.util.ArrayList,而是一个固定大小的内部列表;如需可增删的 ArrayList,得再套一层 new ArrayList()。
用 Arrays.asList() + new ArrayList(...)(推荐)
这是最稳妥的做法,适用于所有对象类型数组(如 String[]、Integer[]),能生成真正可修改的 ArrayList:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- String[] arr = {"a", "b", "c"};
- List
list = new ArrayList(Arrays.asList(arr)); - 之后可以正常调用 list.add("d")、list.remove(0) 等操作
注意:Arrays.asList() 本身不返回 java.util.ArrayList
它返回的是 Arrays 的静态内部类(大小固定),直接使用会抛 UnsupportedOperationException:
- List
list = Arrays.asList(arr); - list.add("x"); // ❌ 运行时报错:UnsupportedOperationException
基本类型数组(如 int[])不能直接用 Arrays.asList()
因为泛型不支持基本类型,int[] 会被当作一个整体对象传入,结果是 List
- int[] nums = {1, 2, 3};
- List
list = Arrays.asList(nums); // 错误!不是 List - 正确做法:先转为包装类数组,或用 Stream(Java 8+):
Listlist = Arrays.stream(nums).boxed().collect(Collectors.toList());
小结
对象数组 → 用 new ArrayList(Arrays.asList(arr));
基本类型数组 → 先 boxed 再收集,或手动封装;
别直接用 Arrays.asList() 返回值做增删操作。

















