Arrays.asList()用于将引用类型数组转为固定大小的List,不支持增删操作且与原数组共享数据,传入基本类型数组会将其视为单个元素,正确做法是使用包装类型,如需可变列表应通过new ArrayList(Arrays.asList(array))创建副本。
在Java中,Arrays.asList() 是一个便捷的方法,用于将数组转换为列表(List)。这个方法属于 java.util.Arrays 类,返回的是一个固定大小的 List,底层基于原数组,不支持结构性修改操作。
该方法适用于引用类型数组(如 String[]、Integer[]),不能直接用于基本数据类型数组(如 int[])。
示例:String[] array = {"apple", "banana", "cherry"};
List list = Arrays.asList(array);
System.out.println(list); // 输出: [apple, banana, cherry]
也可以直接传入元素:
Listlist = Arrays.asList("a", "b", "c");
虽然使用简单,但有几点必须注意:
int[] numbers = {1, 2, 3};
List list = Arrays.asList(numbers); // 得到的是 List 包含一个 int[] 元素
System.out.println(list.size()); // 输出 1,不是预期的 3
正确做法(使用包装类型):
Integer[] numbers = {1, 2, 3};
List list = Arrays.asList(numbers);
System.out.println(list.size()); // 输出 3
如果需要一个真正可变的 List,建议通过构造函数复制一份:
String[] array = {"x", "y", "z"};
List modifiableList = new ArrayList<>(Arrays.asList(array));
modifiableList.add("w"); // 现在可以添加
Arrays.asList() 适合快速创建不可变列表,尤其在初始化或临时使用时非常方便。但要注意它对基本类型无效、不支持增删操作,并且与原数组联动。若需灵活操作,应封装到新的 ArrayList 中。
基本上就这些。