浏览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()
方法而不会出现错误?
答案 0 :(得分:3)
List
只能保存引用类型(例如Integer
)。 Integer
是包装器类型。要将List<Integer>
转换为int[]
,可以使用Stream
将Integer
的值映射到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);