一、概述
java.util.List
是Java中常用的数据结构之一,它可以存储任意类型的对象。而java.util.ArrayList
是List
接口的一个实现类,它使用数组来存储元素,支持动态扩容。在这篇文章中,我们将介绍java.util.ArrayList
中的toArray()
和toArray(T[] a)
方法,它们可以将一个ArrayList
对象转换成数组。
二、toArray()
方法
toArray()
方法返回一个包含该列表所有元素的数组。返回数组的运行时类型是Object[]
。可以使用以下方式将其转换为适当的类型:
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
Object[] arr = list.toArray();
String[] strArr = Arrays.copyOf(arr, arr.length, String[].class);
调用Arrays.copyOf
方法将Object[]
转换为String[]
数组。
三、toArray(T[] a)
方法
toArray(T[] a)
方法返回一个包含该列表所有元素的数组,其运行时类型是指定数组的类型。假设a
数组足够大来包含列表中的所有元素,则将元素复制到该数组中。否则,将根据指定数组的运行时类型和此列表的大小分配一个新数组。如果指定的数组为空,则返回一个具有运行时类型T[]
的新数组。如果指定的数组长度小于列表大小,则返回一个新数组,其运行时类型是指定数组的类型,长度与该列表相同。
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
String[] strArray = new String[2];
strArray = list.toArray(strArray);
在这里,我们创建一个大小为2的String
数组,并在调用toArray
方法时将其传递给它。如果传递的数组足够大,则将元素存储在该数组中,否则将创建一个新数组,并将元素存储在其中。
四、总结
使用toArray()
和toArray(T[] a)
方法可以将ArrayList
对象转换为数组。toArray()
方法返回一个Object[]
数组,需要将其强制转换为适当的类型。toArray(T[] a)
方法则返回一个指定类型的数组,如果传入的数组足够大,则将元素存储在该数组中,否则将创建一个新数组。
以下是完整的代码示例:
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
Object[] arr = list.toArray();
String[] strArr = Arrays.copyOf(arr, arr.length, String[].class);
String[] strArray = new String[2];
strArray = list.toArray(strArray);