您的位置:

Java中List如何转换为数组

在Java中,List和数组是两种常用的数据结构。在一些场景下,需要将List转换为数组,比如对集合进行排序等操作。本文将详细介绍Java中List如何转换为数组。

一、使用toArray()方法转换

Java中List提供了toArray()方法,可以将List转换为数组。方法有两种重载形式:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
String[] arr1 = list.toArray(new String[0]); //1
String[] arr2 = list.toArray(new String[list.size()]); //2

其中,第一种方式需要传入一个类型相同的空数组,通过反射创建一个新数组并返回。这种方式的优势在于可以自动识别泛型类型,而且可以确保数组长度不小于List的长度。

第二种方式需要传入一个长度和List相同的数组,toArray()会将List中的内容复制到传入的数组中。如果传入的数组长度小于List长度,将会创建一个新数组并返回。

二、使用stream()方法转换

Java 8引入了stream()方法,可以方便地将List转换为数组。方法如下:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
String[] arr = list.stream().toArray(String[]::new);

stream()方法将List转换为一个流,我们可以对流进行处理并使用toArray()方法将其转换为数组。这种方式的优势在于代码简洁。

三、使用Arrays.copyOf()方法转换

Java中的Arrays类提供了copyOf()方法,可以将List转换为数组。方法如下:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
String[] arr = Arrays.copyOf(list.toArray(), list.size(), String[].class);

copyOf()方法需要传入原数组、新数组长度和新数组类型。这种方式的优势在于代码简洁,而且可以确保新数组长度等于List长度。

四、小结

本文介绍了Java中三种常用的将List转换为数组的方式:toArray()方法、stream()方法和Arrays.copyOf()方法。不同的方法有不同的优势,可以根据具体场景进行选择。转换后的数组可以方便进行一些数组操作,比如排序、查找等。