ArrayList的toArray()方法无法正常工作

时间:2019-08-18 03:29:17

标签: java arrays arraylist

浏览ArrayList的方法时,我看到了一个名为toArray()的方法。我使用以下代码尝试了此方法:

ArrayList<Integer> a = new ArrayList<>();
// Assigning random elements to the ArrayList
int[] b = a.toArray();

但是,这在编译器中显示了以下异常:

Incompatible types.
Required: int[]
Found: java.lang.Object[]

接下来我要尝试的下一件事是将其向下投射到int[]

ArrayList<Integer> a = new ArrayList<>();
// Assigning random elements to the ArrayList
int[] b = (int[]) a.toArray();

这显示了另一个错误:

Cannot cast java.lang.Object[] to int[]

我最后尝试做的是将其设置为Integer[],然后向下转换到Integer[]

ArrayList<Integer> a = new ArrayList<>();
// Assigning random elements to the ArrayList
Integer[] b = (Integer[]) a.toArray();

这个编译了,但是我一运行它就产生了ClassCastException。如何使用此toArray()方法而不会出现错误?

3 个答案:

答案 0 :(得分:3)

List只能保存引用类型(例如Integer)。 Integer是包装器类型。要将List<Integer>转换为int[],可以使用StreamInteger的值映射到int,然后收集到{{1} }。喜欢,

int[]

答案 1 :(得分:2)

全部写在javadoc

Integer[] b = a.toArray(new Integer[0]);

答案 2 :(得分:1)

扩展@Matthieu的答案,看来您需要传递新的Integer[]。附上geeksforgeeks中给出的示例link

Integer[] arr = new Integer[a.size()]; 
arr = a.toArray(arr);