Arrays.asList()将数组转为固定大小的List,不可增删元素,修改会影响原数组;需可变集合时应包装为ArrayList;基本类型数组需先装箱再转换。

Java中用Arrays.asList()可快速将数组转为List,但要注意它返回的是固定大小的集合,不是ArrayList,也不能增删元素。
基本用法:传入数组直接获得List
该方法接受可变参数(varargs),支持引用类型和基本类型包装类:
- 字符串数组:
List<string> list = Arrays.asList("a", "b", "c");</string> - 整型包装类数组:
List<integer> list = Arrays.asList(1, 2, 3);</integer> - 已声明的数组:
String[] arr = {"x", "y"}; List<string> list = Arrays.asList(arr);</string>
关键限制:返回的是不可变结构的List
Arrays.asList()返回的是Arrays内部的静态嵌套类(如ArrayList,但非java.util.ArrayList),其底层仍指向原数组:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 调用
add()、remove()、clear()会抛UnsupportedOperationException - 修改集合会影响原数组(如
set(0, "new")会改变数组首元素) - 不能扩容或缩容,长度固定
需要可变集合?请包装成真正的ArrayList
若需添加、删除、排序等操作,应将其转为独立的ArrayList:
立即学习“Java免费学习笔记(深入)”;
ArrayList<string> mutableList = new ArrayList(Arrays.asList(arr));</string>- 也可用
new ArrayList(List.of(...))(Java 9+,且List.of本身也不可变) - 注意:包装后与原数组彻底解耦,修改新集合不再影响原数组
基本类型数组需先转为包装类数组
Arrays.asList()不支持int[]、double[]等原始类型数组(会把整个数组当单个元素):
- 错误写法:
int[] nums = {1,2,3}; List<int> list = Arrays.asList(nums); // 得到含1个元素的List</int> - 正确做法:用Stream(Java 8+):
List<integer> list = Arrays.stream(nums).boxed().collect(Collectors.toList());</integer> - 或手动转换:
Integer[] boxed = Arrays.stream(nums).boxed().toArray(Integer[]::new); List<integer> list = Arrays.asList(boxed);</integer>

















