所以我有这个代码,如果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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我这个(当然是9次): [1][2][3][4][5][6][7][8][9]1
现在我想知道,当我打印.size时,为什么我得到1而不是9?
因为您通过执行重置每次迭代中的列表
tillatnaSiffror[i][ruta] = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)
即,您创建一个新列表,丢弃您添加的每个数字的前一个列表!
尝试移出列表的创建:
,--> tillatnaSiffror[i][ruta] = new ArrayList<Integer>();
| for(int add=1;add<=9;add++){
'-----<
tillatnaSiffror[i][ruta].add(add);
System.out.println(tillatnaSiffror[i][ruta]);
}
Run Code Online (Sandbox Code Playgroud)
作为旁注,我建议在这里避免使用数组,并一直使用Java集合.例如,考虑使用类似的结构List<List<Set<Integer>>>.
| 归档时间: |
|
| 查看次数: |
697 次 |
| 最近记录: |