📅  最后修改于: 2020-03-28 11:33:42             🧑  作者: Mango
可以使用以下方法将ArrayList转换为Array:
方法1:使用Object [] toArray()方法
语法:
public Object[] toArray()
// Java展示Objectp[] toArray()如何工作
import java.io.*;
import java.util.List;
import java.util.ArrayList;
class GFG
{
public static void main (String[] args)
{
List al = new ArrayList();
al.add(10);
al.add(20);
al.add(30);
al.add(40);
Object[] objects = al.toArray();
// 打印 array of objects
for (Object obj : objects)
System.out.print(obj + " ");
}
}
输出:
10 20 30 40
注意:toArray()方法返回类型为Object(Object [])的数组。在用作Integer对象之前,我们需要将其类型转换为Integer。如果不进行类型转换,则会出现编译错误。考虑以下示例:
// Java程序,把Objects[]赋值给to Integer[]导致错误.
import java.io.*;
import java.util.List;
import java.util.ArrayList;
class GFG
{
public static void main (String[] args)
{
List al = new ArrayList();
al.add(10);
al.add(20);
al.add(30);
al.add(40);
// 报错: 不匹配的类型: Object[]
// 无法被转换成类型Integer[]
Integer[] objects = al.toArray();
for (Integer obj : objects)
System.out.println(obj);
}
}
输出:
19: error: incompatible types: Object[] cannot be converted to Integer[]
Integer[] objects = al.toArray();
^
1 error
因此,建议创建一个数组,在其中存储List的元素,并将其作为toArray()方法中的参数传递,以存储足够大的元素。否则,将为此分配一个相同类型的新数组。
方法2:使用T [] toArray(T [] a)
// 把一个list,转换成array arr[]
// T 代表泛型
public T[] toArray(T[] arr)
请注意,这里有一个数组参数和数组返回值。传递数组的主要目的是告诉数组的类型。返回的数组与传递的数组具有相同的类型。
如果a的运行时类型不是此列表中每个元素的运行时类型的超类型,则将引发ArrayStoreException。
// Java程序把ArrayList转化成arr[]
import java.io.*;
import java.util.List;
import java.util.ArrayList;
class GFG
{
public static void main(String[] args)
{
List al = new ArrayList();
al.add(10);
al.add(20);
al.add(30);
al.add(40);
Integer[] arr = new Integer[al.size()];
arr = al.toArray(arr);
for (Integer x : arr)
System.out.print(x + " ");
}
}
输出:
10 20 30 40
注意:如果指定的数组为null,则它将抛出NullpointerException。
方法3:使用get()转换ArrayList的手动方法
如果我们不想在Java内置的方法中使用toArray(),则可以使用get()方法。这是复制所有ArrayList的手动方法 。
// 返回在某个index的元素
public E get(int index)
// Java展示把ArrayList转换成array
// 在循环中使用get()
import java.io.*;
import java.util.List;
import java.util.ArrayList;
class GFG
{
public static void main (String[] args)
{
List al = new ArrayList();
al.add(10);
al.add(20);
al.add(30);
al.add(40);
Integer[] arr = new Integer[al.size()];
// ArrayList到Array转换
for (int i =0; i < al.size(); i++)
arr[i] = al.get(i);
for (Integer x : arr)
System.out.print(x + " ");
}
}
输出
10 20 30 40