所以我得到了这段代码,如果 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]);
}
作为旁注,我建议在这里避免使用数组,并一直使用 Java 集合。例如考虑使用像 List<List<Set<Integer>>>
这样的结构.
关于java - ArrayList 未显示正确大小的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7301401/