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);
⚠️ 注意:该 list 不支持 add()、remove()、clear() 等会改变结构的操作,否则抛出 UnsupportedOperationException。
转成真正的 ArrayList(支持增删)
如果需要一个可动态修改的 ArrayList,只需将 Arrays.asList() 的结果传入构造器:
立即学习“Java免费学习笔记(深入)”;
String[] arr = {"a", "b", "c"};ArrayList<String> arrayList = new ArrayList<>(Arrays.asList(arr));
这样得到的对象是标准的 java.util.ArrayList,可以自由调用 add()、remove() 等方法。
处理基本类型数组(如 int[])要特别注意
Arrays.asList() 对基本类型数组(int[]、double[] 等)不会自动拆箱,而是把整个数组当作一个元素:
int[] nums = {1, 2, 3};List<int[]> list = Arrays.asList(nums); // 结果是含一个 int[] 元素的列表
正确做法是改用包装类型数组(Integer[]),或使用 Java 8 的 Stream:
-
Integer[] nums = {1, 2, 3};List<Integer> list = new ArrayList<>(Arrays.asList(nums)); - 或用 Stream:
List<Integer> list = Arrays.stream(nums).boxed().collect(Collectors.toList());
小结关键点
优先用 new ArrayList(Arrays.asList(...)) 得到真正可变的 ArrayList;
避免对 Arrays.asList() 返回值直接调用增删方法;
基本类型数组不能直接用 asList() 转成元素级列表,需先转为包装类型或借助 Stream。


















