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的能力。