0

整件事是我有一个二维数组:

int[][] Key = {{1,0,1,0,1,0},{1,0,1,0,1,0},{1,0,1,0,1,0},{1,0,1,0,1,0},
                        {1,0,1,0,1,0},{1,0,1,0,1,0},{1,0,1,0,1,0},{1,0,1,0,1,0}};

将这个 2D 数组拆分为 8*1D 数组(每个块 1 个)需要什么。所以我定义了 8 个新的一维数组以及一个数组列表来放置所有这些数组:

   ArrayList<int[]> B_Blocks = new ArrayList<int[]>(); 

   int[] B0 = new int[Key[0].length];
   int[] B1 = new int[Key[0].length];
   int[] B2 = new int[Key[0].length];
   int[] B3 = new int[Key[0].length];
   int[] B4 = new int[Key[0].length];
   int[] B5 = new int[Key[0].length];
   int[] B6 = new int[Key[0].length];
   int[] B7 = new int[Key[0].length];

我需要的是某种方法来索引数组列表中的数组,例如我想将第一行值添加Key到第一个数组中Arraylist

PS arraylist 的全部意义在于稍后通过 forloops 获得更多操作的访问权限。任何帮助谢谢

我尝试使用以下嵌套的 for 循环来添加值:

for (int i =0;i<Key.length;i++) {
       for (int j =0;j<Key[0].length;j++) {
       B_Blocks.get(i)[j] = Key[i][j] ;
        } 
   }

它运行但当我输出时值不一样:

for (int i =0;i<rightblock.length;i++) {
       for (int j =0;j<rightblockExp[0].length;j++) {
       System.out.print(B_Blocks.get(i)[j]);
        } System.out.print("\n");
   }
4

3 回答 3

1

如果要在指定索引处添加元素,可以使用add(index, elem)列表中的重载方法。

list.add(0, key[0][0]);
list.add(1, key[0][1]);
于 2012-11-19T01:04:03.463 回答
0

或许我们应该回到最初的需求:

将这个 2D 数组拆分为 8*1D 数组需要什么(每个块 1 个)

我需要的是一种在数组列表中索引数组的方法

您可以像这样使用二维数组:

  • Key[0]会给你第一个子数组(='row'),Key[1]第二个,依此类推。
  • Key[0][0]将为您提供第一个子数组中的第一个元素,Key[0][1]第二个,依此类推。可以说,对元素的访问Key[0][5]也可以表述为

    int[] firstRow = Key[0];
    doSomethingWith(firstRow[5]);
    

第一行让参考firstRow点指向Key[0],即第一个子数组。firstRowKey[0]指向同一个数组 - 当您声明时,您似乎认为该数组会被复制:

不..不如果我要把它们放回另一个数组中,为什么我要把它们放在一个列表中。

ArrayList 问题:

PS arraylist 的全部意义在于稍后通过 forloops 获得更多操作的访问权限。任何帮助谢谢

如果您使用 ArrayLists 重新构建该结构,没有什么会变得更容易 - 除非您想分别向数组添加元素 ArrayLists。

于 2013-05-01T12:23:41.243 回答
0

您可以使用 list.get(i) 访问 ArrayList 的元素。例如:

int[] array1 = B_Blocks.get(0);

希望有帮助!

于 2012-11-19T01:00:41.367 回答