猿问

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

在查看 的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()方法而不会出错?


繁星coding
浏览 162回答 3
3回答

www说

List只能包含引用类型(如Integer)。Integer是包装器类型。要将 a 转换List<Integer>为 an&nbsp;int[],可以选择使用 aStream将值映射Integer到int然后收集到 an&nbsp;int[]。喜欢,int[]&nbsp;b&nbsp;=&nbsp;a.stream().mapToInt(Integer::intValue).toArray(); System.out.println(Arrays.toString(b));

森栏

这一切都写在javadoc中:Integer[] b = a.toArray(new Integer[0]);

慕田峪7331174

看来你需要通过 new Integer[]。Integer[] arr = new Integer[a.size()];  arr = a.toArray(arr);
随时随地看视频慕课网APP

相关分类

Java
我要回答