Java ArrayList.toArray() 方法及代码示例
获取数组列表中所有元素组成的数组
定义
public Object[] toArray()
或
public <T> T[] toArray(T[] a)
参数
参数类型 | 参数名称 | 参数描述 |
---|---|---|
T[] | a | 如果数组足够大, 则存储列表元素的数组; 否则, 将为此目的分配相同运行时类型的新数组 |
类型参数 | E | 数组列表中的元素的类型 |
类型参数 | T | 包含了集合的数组元素的类型 |
返回值
返回一个数组, 该数组以适当的顺序(从第一个元素到最后一个元素)包含列表中的所有元素.
如果指定了数组参数, 且数组的长度大于数组列表的长度, 那么数组中不足的元素会用 null
填充.
抛出的异常
ArrayStoreException
如果指定数组的运行时类型不是列表中每个元素的运行时类型的超类型
NullPointerException
如果指定的数组是null
说明
本方法方法由 Collection<E>
接口的 toArray()
规定实现
本方法方法由 List<E>
接口的 toArray()
规定实现
本方法重写了继承自 AbstractCollection<E>
类的 toArray()
方法
返回的数组将是 "安全的", 因为这个列表不会维护对它的引用. 也就是说, 这个方法分配出的是一个新的数组. 因此, 调用者可以自由地修改返回的数组.
示例
直接从数组列表获取数组的示例
package com.yi21.arraylist; import java.util.ArrayList; public class Yi21ArraysListToArray { public static void main(String[] args) { ArrayList<String> aList = new ArrayList<>(); aList.add("Hello"); aList.add("World"); Object[] arr = aList.toArray(); System.out.println("获取拷贝数组元素的数量: " + arr.length + ", 并修改数组元素."); arr[1] = "21yi"; System.out.println("输出数组元素:"); for(Object a: arr) { System.out.println((String) a); } System.out.println("输出数组列表元素:"); aList.forEach(System.out::println); } }
执行结果为 :
获取拷贝数组元素的数量: 2, 并修改数组元素. 输出数组元素: Hello 21yi 输出数组列表元素: Hello World
提供数组参数从数组列表获取数组的示例
package com.yi21.arraylist; import java.util.ArrayList; public class Yi21ArraysListToArray2 { public static void main(String[] args) { ArrayList<String> aList = new ArrayList<>(); aList.add("Hello"); aList.add("21yi"); System.out.println("当指定数组容量大于原数组列表:"); String[] arr = new String[3]; arr = aList.toArray(arr); for(String a: arr) { System.out.println(a); } System.out.println("当指定数组容量小于原数组列表:"); arr = new String[1]; arr = aList.toArray(arr); for(String a: arr) { System.out.println(a); } System.out.println("修改数组的内容是否影响原数组列表:"); arr[1] = "World"; System.out.println("输出数组:"); for(String a: arr) { System.out.println(a); } System.out.println("输出数组列表:"); aList.forEach(System.out::println); } }
执行结果为 :
当指定数组容量大于原数组列表: Hello 21yi null 当指定数组容量小于原数组列表: Hello 21yi 修改数组的内容是否影响原数组列表: 输出数组: Hello World 输出数组列表: Hello 21yi