最推荐方式是用 arrays.aslist() 配合 new arraylist() 构造;因 arrays.aslist() 返回固定大小的内部类,不支持增删操作,直接调用 add()/remove() 会抛 unsupportedoperationexception。

Java 中把普通数组转成 ArrayList,最常用、最推荐的方式是用 Arrays.asList() 配合 new ArrayList() 构造。
为什么不能直接用 Arrays.asList() 的返回值?
Arrays.asList(array) 确实能快速把数组变成一个“类似 List”的对象,但它返回的是 Arrays 类的内部静态子类(大小固定、不支持增删),不是真正的 ArrayList。调用 add()、remove() 会抛 UnsupportedOperationException。
正确做法:两步走,确保可修改
要得到一个功能完整、可动态增删的 ArrayList,需再包一层:
- 对引用类型数组(如
String[]、Integer[]):
List
- 对基本类型数组(如
int[]、double[]):Arrays.asList()无法直接使用(它会把整个数组当成一个元素)。必须先手动遍历或用 Stream(Java 8+):
List
(注意:这里得到的是 ArrayList 的父类 List,如需明确是 ArrayList,可再套一层:new ArrayList(…))
小提醒:原始类型数组的常见误区
别写 Arrays.asList(new int[]{1,2,3}) —— 它返回的是 List<int></int>(只含一个元素),不是你想要的三个整数的列表。必须用 Stream.boxed() 或手动转换。
一句话总结
引用类型数组 → new ArrayList(Arrays.asList(arr));基本类型数组 → 走 Stream 或循环转换,再构造 ArrayList。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











