我有一个列表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);
      }
}

10-01 09:25