我遇到了如下问题:
当我初始化 ArrayList<ArrayList<Integer>>
,代码是:
ArrayList<ArrayList<Integer>> group = new ArrayList<ArrayList<Integer>>();
group.add((ArrayList<Integer>) Arrays.asList(1, 2, 3));
group.add((ArrayList<Integer>) Arrays.asList(4, 5, 6));
group.add((ArrayList<Integer>) Arrays.asList(7, 8, 9));
for (ArrayList<Integer> list : group) {
for (Integer i : list) {
System.out.print(i+" ");
}
System.out.println();
}
虽然代码可以编译成功,但是控制台还是报错:
线程“main”中的异常 java.lang.ClassCastException:java.util.Arrays$ArrayList 无法转换为 java.util.ArrayList 在 Solution.main(Solution.java:49)
感谢您的帮助!
最佳答案
Arrays.asList
不返回 java.util.ArrayList
.它确实返回一个名为 ArrayList
的类的实例,巧合的是 - 但那不是 java.util.ArrayList
.
除非你需要这真的是一个ArrayList<ArrayList<Integer>>
我只是将其更改为:
List<List<Integer>> group = new ArrayList<>();
group.add(Arrays.asList(1, 2, 3));
group.add(Arrays.asList(4, 5, 6));
group.add(Arrays.asList(7, 8, 9));
for (List<Integer> list : group) {
...
}
如果您确实需要ArrayList<ArrayList<...>>
- 或者如果您需要能够添加到“内部”列表,即使您不需要静态类型的 ArrayList
- 然后你需要创建一个新的 ArrayList
对于每个列表:
group.add(new ArrayList<Integer>(Arrays.asList(1, 2, 3)));
// etc
关于java - 初始化 ArrayList<ArrayList<Integer>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27112973/