Java中 Arrays.asList 的坑

在Java中,Arrays.asList()方法用于将数组转换为List对象。以下是使用Arrays.asList()时需要注意的一些事项:

  1. 不可变性:Arrays.asList()返回的List对象是不可变的。这意味着你不能使用add()、remove()等方法来修改列表。如果需要修改列表,可以先将其转换为ArrayList或其他可变列表实现。
List<String> list = Arrays.asList("A", "B", "C");
list.add("D"); // 抛出 UnsupportedOperationException
  1. 修改数组:如果原始数组是基本类型(如int[]、double[]等),则不能直接修改返回的List对象。但是,如果原始数组是引用类型(如String[]、Integer[]等),则可以通过List对象修改数组元素。
Integer[] intArray = {1, 2, 3};
List<Integer> list = Arrays.asList(intArray);
list.set(0, 42); // 修改原始数组的第一个元素
System.out.println(Arrays.toString(intArray)); // 输出:[42, 2, 3]
  1. 空值和长度:Arrays.asList()允许包含null值,并且返回的List对象的长度与数组长度相同。如果需要创建一个空列表,可以使用Arrays.asList()的空参数版本:
List<Object> emptyList = Arrays.asList(); // 创建一个空列表
  1. 泛型:Arrays.asList()方法是泛型的,因此可以将其用于任何类型的数组。但是,如果数组的类型不匹配,编译器会报错。
  2. 不能直接使用 Arrays.asList 来转换基本类型数组

总之,在使用Arrays.asList()时,需要注意其返回的List对象是不可变的,不能直接修改基本类型数组,但可以通过List对象修改引用类型数组。此外,还需要注意泛型和空值的处理。

posted @ 2024-02-19 09:35  Micky233  阅读(35)  评论(0编辑  收藏  举报