我有一个列表List<int[][]> orgnisms = new ArrayList<>();
,已填充了几个空表(仅0个值),现在我要设置某些单元格的值。例如,我希望列表和单元格[1][1]
中的第一个表具有值1
。我该怎么做?
编辑:
我有一个问题,因为orgnisms.get(0)[1][1] = 1;
将值1
添加到列表中的每个表中,不仅是索引为0
的表...
这是我的代码,用于生成一个新的空多维数组,然后将其添加到orgnisms
列表中:
private void newEmptyArrays(){
int[][] emptyTable = new int[n][n];
for( int[] ii : emptyTable)
for (int i : ii)
i = 0;
for(int i=0;i<mi;i++)
orgnisms.add(emptyTable);
}
最佳答案
List<int[][]> orgnisms = new ArrayList<>();
列表中的每个元素都是多维数组,因此,如果要访问它们中的任何一个,则首先需要通过
List#get
方法检索它,然后对其执行一些操作,即orgnisms.get(0)[1][1] = 1;
orgnisms.get(0)
将检索对多维数组的引用,然后[1][1]
将对检索到的多维数组的行1
和列1
进行索引,并为其分配一个值1
。更新资料
我有一个问题,因为orgnisms.get(0)[1] [1] = 1;将值加1
到列表中的每个表,不仅是索引为0的表...
仔细查看最后一个循环,您将在
orgnisms
列表中存储对同一多维数组的多个引用,因此发生这种行为很有意义。另外,根据您的更新,代码没有按照您的想法做。实际上,嵌套的
for
循环对emptyTable
多维数组没有任何作用。但是,默认情况下,emptyTable
中的所有数组的值0
始终设置为每个元素,这意味着尝试再次将它们设置为0
是多余的。也就是说,您可以相应地更改方法:
private void newEmptyArrays(){
for(int i = 0; i < mi ; i++){
int[][] emptyTable = new int[n][n];
orgnisms.add(emptyTable);
}
}