在 Java 编程中,我们经常需要把数组转换为 List。本文将从多个方面详细阐述如何将数组转换为 List,包括使用 Arrays.asList() 方法、手动将数组转换为 List、使用 Java 8 中的 Stream API 以及使用 Guava 库等方法。
一、使用 Arrays.asList() 方法
Arrays.asList() 方法是将数组转换为 List 最常见的方法。它可以接受一个数组作为参数,返回一个 List。
int[] intArray = {1, 2, 3, 4, 5}; List<Integer> intList = Arrays.asList(intArray);
在使用 Arrays.asList() 方法时,需要注意以下几点:
1. 数组和 List 同时被修改
String[] strArray = {"Hello", "World", "!"}; List<String> strList = Arrays.asList(strArray); strList.set(1, "Java"); // strArray[1] 也被修改为 "Java"
2. 只能对数组进行基础数据类型的转换
// 编译错误:Type mismatch: cannot convert from List<int[]> to List<Integer> int[][] intArray2D = {{1, 2}, {3, 4}}; List<Integer> intList2D = Arrays.asList(intArray2D);
二、手动将数组转换为 List
除了使用 Arrays.asList() 方法外,还可以手动将数组转换为 List。这种方法比较简单,但是需要注意一些细节问题。
Integer[] intArray = {1, 2, 3, 4, 5}; List<Integer> intList = new ArrayList<>(Arrays.asList(intArray));
需要注意的是,这种方法只适用于数组元素为对象类型的情况,如果是基础数据类型的数组,需要进行装箱操作(boxing)。
三、使用 Java 8 中的 Stream API
Java 8 中引入了 Stream API,它提供了一种更加简洁和便利的方法来处理集合操作,包括将数组转换为 List。
Integer[] intArray = {1, 2, 3, 4, 5}; List<Integer> intList = Arrays.stream(intArray).collect(Collectors.toList());
需要注意的是,使用 Stream API 转换数组时,需要使用 java.util.stream.Collectors 类以及 java.util.Arrays 类。
四、使用 Guava 库
Guava 是一个 Google 提供的 Java 工具库,它提供了丰富的工具类和 API,其中包括了将数组转换为 List 的方法。
Integer[] intArray = {1, 2, 3, 4, 5}; List<Integer> intList = Lists.newArrayList(intArray);
需要注意的是,这种方法需要引入 guava 库。
五、总结
本文详细介绍了 Java 中将数组转换为 List 的多种方法,包括使用 Arrays.asList() 方法、手动将数组转换为 List、使用 Java 8 中的 Stream API 以及使用 Guava 库等方法。每种方法都有其优缺点,开发者可以根据实际需求进行选择。