1.方法1:使用 Object[] toArray() 方法
- 由接口Collection和接口List中的toArray指定
- 它覆盖类 AbstractCollection 中的 toArray
- 它以正确的顺序返回一个包含此列表中所有元素的数组。
public Object[] toArray()
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(4);
list.add(3);
list.add(2);
Object[] objects = list.toArray();
System.out.println(Arrays.toString(objects));//打印数组
}
}
[1, 4, 3, 2]
注意:toArray() 方法返回一个 Object(Object[]) 类型的数组。在用作 Integer 对象之前,我们需要将其类型转换为 Integer。如果我们不进行类型转换,就会出现编译错误。考虑以下示例:
2.方法2:使用 T[] toArray(T[] a)
// 将列表转换为数组 arr[] 并返回相同的值。
// 如果 arr[] 不够大,新建一个相同的新数组
// 类型是为此目的分配的。
// T 代表泛型。
public T[] toArray(T[] arr)
请注意,有一个数组参数和数组返回值。 passed array 的主要目的是告诉数组的类型。返回的数组与传递的数组类型相同
- 如果传递的数组
有足够的空间
,则元素将存储在该数组本身中。 - 如果传递的数组
没有足够的空间
,则会创建一个与给定列表具有相同类型和大小的新数组。
- 如果传递的数组
有更多空间
,则首先用列表元素填充数组
,然后填充空值
。
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(4);
list.add(3);
list.add(2);
Integer[] arr = new Integer[list.size()];
arr = list.toArray(arr);
System.out.println(Arrays.toString(arr));//打印数组
}
}
[1, 4, 3, 2]
3.方法3:使用 get() 方法手动转换 ArrayList 的方法
// 返回列表中指定索引处的元素。
public E get(int index)
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(4);
list.add(3);
list.add(2);
Integer[] arr = new Integer[list.size()];
for (int i = 0; i < list.size(); i++)
arr[i] = list.get(i);
System.out.println(Arrays.toString(arr));//打印数组
}
}
[1, 4, 3, 2]