ArrayList的问题没有显示正确的大小

时间:2011-09-04 18:46:21

标签: java arraylist

所以我有这个代码,如果ArrayList不存在,它会将数字1-9添加到单独的ArrayLists中。但是,即使我打印了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?

1 个答案:

答案 0 :(得分:8)

因为通过

重置每次迭代中的列表
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>>>这样的结构。