java中将数组转arraylist最推荐用arrays.aslist(),但返回的是固定大小列表;需可修改时应再套new arraylist;基本类型数组需转包装类型或用stream处理。

Java 中将数组转换为 ArrayList 最常用且推荐的方式是使用 Arrays.asList() 方法,但要注意它返回的是一个固定大小的列表,不是真正的 ArrayList 实例;如需可修改的 ArrayList,需再包装一层。
用 Arrays.asList() 创建固定大小的 List
这是最简洁的写法,适用于只读或不需要增删元素的场景:
String[] arr = {"a", "b", "c"};List<string> list = Arrays.asList(arr);</string>
⚠️ 注意:该 list 不支持 add()、remove()、clear() 等会改变结构的操作,否则抛出 UnsupportedOperationException。
转成真正的 ArrayList(支持增删)
如果需要一个可动态修改的 ArrayList,只需将 Arrays.asList() 的结果传入构造器:
String[] arr = {"a", "b", "c"};ArrayList<string> arrayList = new ArrayList(Arrays.asList(arr));</string>
这样得到的对象是标准的 java.util.ArrayList,可以自由调用 add()、remove() 等方法。
处理基本类型数组(如 int[])要特别注意
Arrays.asList() 对基本类型数组(int[]、double[] 等)不会自动拆箱,而是把整个数组当作一个元素:
int[] nums = {1, 2, 3};List<int> list = Arrays.asList(nums); // 结果是含一个 int[] 元素的列表</int>
正确做法是改用包装类型数组(Integer[]),或使用 Java 8 的 Stream:
-
Integer[] nums = {1, 2, 3};List<integer> list = new ArrayList(Arrays.asList(nums));</integer> - 或用 Stream:
List<integer> list = Arrays.stream(nums).boxed().collect(Collectors.toList());</integer>
小结关键点
优先用 new ArrayList(Arrays.asList(...)) 得到真正可变的 ArrayList;
避免对 Arrays.asList() 返回值直接调用增删方法;
基本类型数组不能直接用 asList() 转成元素级列表,需先转为包装类型或借助 Stream。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











