您的位置:

Java数组转List方法详细解析

Java提供了很多种将数组转换为List的方法,本文将对这些方法进行详细的阐述。

一、Arrays.asList()

Arrays.asList()是将数组转换为List比较常见的方法。该方法返回一个受指定数组支持的固定大小的列表。这个方法的一个很大的特点是它不创建新的List对象,而是使用底层数组作为List,因此不能使用add()remove()等方法修改List,否则会抛出UnsupportedOperationException异常。

Integer[] arr = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(arr);
System.out.println(list);

通过Arrays.asList()方法将数组转换为List:

[1, 2, 3, 4, 5]

如果我们尝试使用add()方法向List中添加元素,会抛出异常:

list.add(6);

抛出异常:

Exception in thread "main" java.lang.UnsupportedOperationException

这也是Arrays.asList()方法缺点之一,如果我们需要使用List的add()remove()方法,可以将其返回值重新创建一个List,示例代码如下:

List<Integer> list2 = new ArrayList<>(Arrays.asList(arr));
list2.add(6);
System.out.println(list2);

上面的代码将Arrays.asList()方法返回的List重新封装成一个ArrayList对象,就可以使用add()remove()方法了,输出结果如下:

[1, 2, 3, 4, 5, 6]

二、Collections.addAll()

Collections.addAll()方法可以将一个数组转换为一个List,该方法的优点是可以使用List的add()remove()方法。

Integer[] arr = {1, 2, 3, 4, 5};
List<Integer> list = new ArrayList<>();
Collections.addAll(list, arr);
System.out.println(list);

输出结果如下:

[1, 2, 3, 4, 5]

使用add()方法向List中添加元素:

list.add(6);
System.out.println(list);

输出结果如下:

[1, 2, 3, 4, 5, 6]

三、Stream.of()

Java 8引入了Stream的概念,可以通过Stream.of()方法快速将数组转换为List,代码如下:

Integer[] arr = {1, 2, 3, 4, 5};
List<Integer> list = Stream.of(arr).collect(Collectors.toList());
System.out.println(list);

输出结果如下:

[1, 2, 3, 4, 5]

同样的,我们可以使用add()方法向List添加元素:

list.add(6);
System.out.println(list);

输出结果如下:

[1, 2, 3, 4, 5, 6]

四、Guava库

Google Guava库提供了一个类似Collections.addAll()的方法com.google.common.collect.Lists.newArrayList(),可以快速将一个数组转换为List。

引入Guava库:

import com.google.common.collect.Lists;

使用Lists.newArrayList()方法将数组转换为List:

Integer[] arr = {1, 2, 3, 4, 5};
List<Integer> list = Lists.newArrayList(arr);
System.out.println(list);

输出结果如下:

[1, 2, 3, 4, 5]

使用add()方法向List添加元素:

list.add(6);
System.out.println(list);

输出结果如下:

[1, 2, 3, 4, 5, 6]

五、总结

以上就是Java将数组转换为List的几种方法,选择哪种方法取决于具体的使用场景和需要修改List的能力。