您的位置:

Java中List转数组的方法

一、List转数组的基本方法

将List转换为数组是Java开发中经常使用的功能之一。Java中可以使用toArray方法将List转换为数组。toArray方法有两种使用方式,即无参和带参,它们的用法和区别如下:

1、无参方式

public Object[] toArray()

无参方式的toArray方法返回一个Object类型的数组。实际上,该方法返回的数组类型并不是List中元素的类型,而是Object类型的。

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
Object[] array = list.toArray();
for (Object str : array) {
    System.out.println(str);
}

该段代码创建了一个list集合,往集合中添加两个String类型的元素,然后使用toArray方法将List转换为数组,遍历该数组并打印元素值。运行结果为:

Java
Python

2、带参方式

public <T> T[] toArray(T[] a)

有参方式的toArray方法可以将List转换为指定类型的数组。该方法需要一个参数,该参数是一个提供类型信息的数组,也就是说,作为参数的数组会确定返回数组的类型。如果指定的参数数组的长度小于List的长度,则会创建一个新的数组类型,并返回这个新的数组。

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
String[] array = list.toArray(new String[0]);
for (String str : array) {
    System.out.println(str);
}

该段代码与无参方式方法类似,不过在toArray方法中指定了一个String类型的数组作为参数。对于该方式的使用,需要注意的是,当参数数组的长度小于List的长度时,会创建一个新的数组类型,并返回这个新的数组类型。如果使用方式不当,可能会导致数组越界异常。运行结果为:

Java
Python

二、List转基本数据类型数组的方法

除了可以将List转换为Object类型的数组,在Java中还可以将List转换为基本数据类型的数组。这里以将List转换为int类型数组为例,介绍List转基本数据类型数组的方法。

1、for循环方式

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
int[] array = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
    array[i] = list.get(i);
}
for (int num : array) {
    System.out.println(num);
}

该段代码将一个List集合转换成int类型的数组。在这里,通过for循环的方式,将List中的元素一个个取出,存储到定义好的int类型数组中。最后通过一个foreach循环遍历数组并输出每一个元素。运行结果为:

1
2
3

2、Java8中的流操作方式

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
int[] array = list.stream().mapToInt(Integer::intValue).toArray();
for (int num : array) {
    System.out.println(num);
}

在Java8中,可以使用流操作方式将List转换为基本数据类型数组。在这个例子中,将Integer类型的List转换成int类型的数组。在这里,可以使用mapToInt方法将List中的元素转换成int类型,再使用toArray方法将处理后的数组返回。最后也是通过foreach循环遍历数组并输出每一个元素。运行结果为:

1
2
3

三、List转二维数组的方法

在Java中,将List转换为二维数组主要是为了进行数组和矩阵操作。一般而言,可以使用for循环或者Java8中的流操作方式进行处理。

1、for循环方式

List<int[]> list = new ArrayList<>();
list.add(new int[]{1, 2});
list.add(new int[]{3, 4, 5});
int[][] array = new int[list.size()][];
for (int i = 0; i < list.size(); i++) {
    array[i] = list.get(i);
}
for (int[] nums : array) {
    System.out.println(Arrays.toString(nums));
}

该段代码将一个List集合转换成二维数组。在这里,使用for循环的方式,将List中的元素一个个取出,存储到定义好的二维数组中。在这里,需要注意的是,第二维的长度需要重新定义,因为不同的一维数组可能有不同的元素个数。最后通过一个foreach循环遍历数组并输出每个数组中的元素。运行结果为:

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

2、Java8中的流操作方式

List<int[]> list = new ArrayList<>();
list.add(new int[]{1, 2});
list.add(new int[]{3, 4, 5});
int[][] array = list.stream().toArray(int[][]::new);
for (int[] nums : array) {
    System.out.println(Arrays.toString(nums));
}

在Java8中,可以使用流操作方式将List转换为二维数组。在这个例子中,将int[]类型的List转换成int[][]类型的二维数组。在这里,可以使用toArray方法将流转换成一个int[][]类型的二维数组。最后也是通过foreach循环遍历二维数组并输出每个数组中的元素。运行结果为:

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