在 Java 开发中,我们经常需要将 List 转换为数组 Array,使用到的工具类是 Arrays。
一、选取要转换的 List
List<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); list.add("C++");
以上是一个简单的 List 示例,包含三个字符串元素。
二、使用 toArray() 方法转换为数组
Object[] objects = list.toArray();
toArray() 方法会将 List 转化为 Object 类型的数组,这种情况下将失去泛型的意义。如果确保 List 内含有相同类型元素,则可以将 Object 类型强制转换为对应类型的数组,如下所示:
String[] strings = list.toArray(new String[0]);
如果不传递任何参数,则 toArray() 方法返回的是 Object 类型的数组,将无法进行强制类型转换。因此,需要传递一个初始数组,同时在需要的时候进行扩展,如下所示:
String[] strings = list.toArray(new String[list.size()]);
三、使用 Stream API 转换为数组
使用 Java 8 中的 Stream API 可以更加简便地将 List 转换为数组,如下所示:
String[] strings = list.stream().toArray(String[]::new);
使用 Stream API 也可以进行筛选、过滤、排序等操作。
四、使用 List 转化为 IntStream、LongStream 或 DoubleStream
对于包含 int、long 或 double 类型元素的 List,也可以通过 mapToInt()、mapToLong() 或 mapToDouble() 方法将其转换为对应的 Stream,然后使用 toArray() 方法将其转换为数组。
List<Integer> integerList = Arrays.asList(1, 2, 3); int[] ints = integerList.stream().mapToInt(Integer::intValue).toArray();
mapToInt() 方法将 Integer 对象转换为 int 类型的 Stream,然后使用 toArray() 方法将其转换为 int 数组。
五、小结
以上就是几种将 List 转换为数组的方法,使用 toArray() 方法是最常见的方式,使用 Stream API 能够更加简便地实现转换,对于包含基本类型元素的 List,可以通过 mapToInt()、mapToLong() 或 mapToDouble() 方法将其转换为对应类型的 Stream,再使用 toArray() 方法进行转换。