java - ArrayList 未显示正确大小的问题

标签 java arraylist

所以我得到了这段代码,如果 ArrayList 不存在,它将把数字 1-9 添加到单独的 ArrayList 中。然而,即使我打印了 ArrayLists(并且它得到了所有正确的数字),当我打印 ArrayList 的 .size 时,它​​给了我 1 而不是 9。我希望你理解我的问题。这是代码:

ArrayList[][] tillatnaSiffror = new ArrayList[9][9];

    for(int i=0;i<9;i++){
        for(int ruta=0;ruta<9;ruta++){

            if(tillatnaSiffror[i][ruta] == null){
                for(int add=1;add<=9;add++){
                    tillatnaSiffror[i][ruta] = new ArrayList<Integer>();
                    tillatnaSiffror[i][ruta].add(add);
                    System.out.println(tillatnaSiffror[i][ruta]);
                }
                System.out.println(tillatnaSiffror[i][ruta].size());
            }
        }
    }

这给了我这个(当然是九次):[1][2][3][4][5][6][7][8][9]1

现在我想知道,为什么我在打印 .size 时得到的是 1 而不是 9?

最佳答案

因为您在每次迭代中重置列表通过做

tillatnaSiffror[i][ruta] = new ArrayList<Integer>();

即,您创建一个新列表,为您添加的每个数字丢弃前一个列表!

尝试移出列表的创建:

 ,-->   tillatnaSiffror[i][ruta] = new ArrayList<Integer>();
 |      for(int add=1;add<=9;add++){
 '-----<
            tillatnaSiffror[i][ruta].add(add);
            System.out.println(tillatnaSiffror[i][ruta]);
         }

Ideone.com demo


作为旁注,我建议在这里避免使用数组,并一直使用 Java 集合。例如考虑使用像 List<List<Set<Integer>>> 这样的结构.

关于java - ArrayList 未显示正确大小的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7301401/

相关文章:

java - 如何左移 ArrayList

java - 如何使用 StackMob 查询列表填充 listView

java - 如何在 SmartGWT 中使用其他包中的类

java - Android 服务 ("startService & stopService") 和播放/停止按钮合二为一

java - 将 NULL 值显式设置为数组元素

java - 在 Java 中使用 "@SuppressWarnings("unchecked")"有什么好处?

java - 在 tomcat webapp 中引用可变的外部 web 服务 url

java.lang.ClassCastException : java. lang.String 无法转换为 java.lang.Long 错误

java - 我应该如何按 ArrayList 中包含的一些整数对它进行排序?

java - 有没有一种方便的方法将多个ArrayList打包到JsonArray中?