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 接口文档转换为前端 TypeScript 类型定义(interface / type)。输入:飞书文档、Spring Boot 接口文档、Swagger/OpenAPI、手写 API 文档等。输出:包含请求参数与响应结果的 .md 文件,含完整 JSDoc 注释。触发关键词:Java 转 TS、接口转换、生成前端类型、接口文档转 TypeScript、DTO/VO/BO 转 interface、后端文档转前端类型、生成接口类型、类型定义生成。
- 调用
add()、remove()、clear()会抛UnsupportedOperationException - 修改集合会影响原数组(如
set(0, "new")会改变数组首元素) - 不能扩容或缩容,长度固定
需要可变集合?请包装成真正的ArrayList
若需添加、删除、排序等操作,应将其转为独立的ArrayList:
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>
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










