Arrays.asList()返回固定大小的列表,不支持add/remove操作;2. 基本类型数组会被当作单个对象,应使用包装类型;3. 返回列表与原数组共享内存,修改相互影响,需复制避免。

Java中的Arrays.asList()方法是一个便捷工具,用于将数组转换为列表。虽然使用简单,但有几个关键点需要注意,避免在实际开发中踩坑。
返回的List是固定大小的
Arrays.asList() 返回的是 java.util.Arrays.ArrayList,这是一个内部类,它不支持添加或删除元素的操作。
调用 add() 或 remove() 方法会抛出 UnsupportedOperationException。- 该列表只是对原数组的“视图”,结构上不可变(不能增删)
- 如果需要可变列表,应创建一个新的 ArrayList:
List
基本类型数组会被整体当作一个对象
由于泛型不支持基本数据类型,传入基本类型数组时,整个数组会被当作单个对象处理。
立即学习“Java免费学习笔记(深入)”;
PinPHP是一套基于LAMP技术架构(Linux+Apache/Nginx+MySQL+PHP)的、免费的、开源的社会化分享系统!同时PinPHP分享系统V3.0正式版在V2.2正式版的基础上,对“网站架构”、“负载性能”等几大方面,进行了全面升级。注意事项:1、V3.0采用全新的代码结构与数据库结构,不可以进行版本
- 例如:
int[] arr = {1, 2, 3}; Listlist = Arrays.asList(arr); - 此时 list 只有一个元素,即这个 int 数组本身
正确做法是使用包装类型:Integer[] arr = {1, 2, 3};
修改列表会影响原数组
因为 asList 返回的列表与原数组共享同一块内存,所以对列表中元素的修改会反映到原数组上。
- 例如:修改 list.set(0, "new"),原数组对应位置也会改变
- 反之亦然,数组的修改也会影响列表
如果希望两者独立,需要复制一份数据到新的集合中。
基本上就这些注意事项。只要理解它返回的是一个受限的、与原数组绑定的列表,就能避免大多数问题。









