所以我有这个代码,如果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?
答案 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]);
}
作为旁注,我建议在这里避免使用数组,并一直使用Java集合。例如,考虑使用像List<List<Set<Integer>>>
这样的结构。