java - 初始化 ArrayList<ArrayList<Integer>>

标签 java arrays arraylist

我遇到了如下问题:

当我初始化 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/

相关文章:

java - 不同的区域设置会发生 NumberFormatException

java - 如何在 Java 中将 MySQL unsigned int 转换为 Protocol Buffer uint32?

c++ - 找到随机排列数组的平均比较次数

c++ - 遍历还包含未使用元素的字符串数组

java - 所有列表变量中的设置值都在更新

java - 从 Arraylist 中获取 float 而不是对象

javascript - jsoup 以键值对的形式从网页检索数据

java - Java中通过Arrays.toString使循环结果出现在数组中

java - 我需要在 arraylist 中找到一个整数数据?

Java 打印();具有来自不同类的 getter 的方法