0

在查看ArrayList's 方法时,我看到了一个名为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()方法而不会出错?

4

3 回答 3

3

List只能保存引用类型(如Integer)。Integer是一个包装类型。要将 a 转换List<Integer>为 an int[],可以选择使用 aStreamInteger值映射到int然后收集到int[]. 喜欢,

int[] b = a.stream().mapToInt(Integer::intValue).toArray();
System.out.println(Arrays.toString(b));
于 2019-08-18T03:49:34.607 回答
2

这一切都写在javadoc中:

Integer[] b = a.toArray(new Integer[0]);
于 2019-08-18T03:31:23.840 回答
1

扩展@Matthieu 的答案,看来您需要通过 new Integer[]。附上 geeksforgeeks 中给出的示例链接。

Integer[] arr = new Integer[a.size()]; 
arr = a.toArray(arr);
于 2019-08-18T03:54:37.453 回答