您的位置:

Java ArrayList转数组

一、Java ArrayList的基本介绍

Java中的ArrayList是一种动态数组,它可以自动扩容以适应数据的增加。ArrayList中可以存储任何类型的数据,但不能直接存储基本数据类型,需要使用其对应的包装类实现。

二、Java ArrayList转换为数组的方式

Java ArrayList可以通过三种方法将其转换为数组:使用toArray()方法、利用Java 8的Stream API,以及调用Java中的copyOf()方法。

1) 使用toArray()方法

ArrayList提供了一个toArray()方法,该方法可以将ArrayList转换为数组。

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Integer[] arr = list.toArray(new Integer[0]);

代码解释:

1) 首先我们创建了一个ArrayList并向其中添加了三个Integer类型的元素。

2) 调用ArrayList中的toArray()方法,并将其传入一个新的Integer类型数组,此时新的数组长度为0,这样做的目的是告诉Java将返回一个大小相同的新数组。

3) toArray()方法返回的类型是Object[],但是我们可以将其进行强制转换为我们需要的类型。

2) 利用Java 8的Stream API

Java 8中新增了Stream API。我们可以使用Stream API将ArrayList转换为数组。

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

代码解释:

1) 我们创建了一个ArrayList并向其中添加了三个String类型的元素。

2) 调用ArrayList中的stream()方法,获取Stream对象。

3) 调用Stream对象中的toArray()方法,并将其传入一个方法引用String[]::new,表示创建一个String类型的数组。

3) 调用Java中的copyOf()方法

在Java中,Arrays类提供了数组的许多实用程序方法,其中包括一个用于复制数组的方法copyOf()。

List<Double> list = new ArrayList<>();
list.add(1.2);
list.add(3.4);
list.add(5.6);
Double[] arr = Arrays.copyOf(list.toArray(), list.size(), Double[].class);

代码解释:

1) 我们创建了一个ArrayList并向其中添加了三个Double类型的元素。

2) 调用ArrayList中的toArray()方法,将其返回结果作为copyOf()方法的第一个参数。

3) 将ArrayList的大小作为copyOf()方法的第二个参数。

4) 将数组的目标类型(此处为Double[])作为copyOf()方法的第三个参数。

三、总结

Java ArrayList是一种非常实用的数据结构,并且可以很方便地与数组进行转换。我们可以使用toArray()方法、Java 8的Stream API或者Arrays类中的copyOf()方法将ArrayList转换为数组,并在实际开发中根据具体情况选择合适的转换方式。