如何索引数组列表中的数组?

时间:2012-11-19 00:48:12

标签: java arrays arraylist indexing

整个事情是我有一个2D数组:

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}};

在8 * 1D阵列中拆分这个2D阵列需要什么(每个块1个)。所以我定义了8个新的1D数组以及一个数组列表,将所有这些数组放入其中:

   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

P.S 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");
   }

3 个答案:

答案 0 :(得分:1)

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

list.add(0, key[0][0]);
list.add(1, key[0][1]);

答案 1 :(得分:0)

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

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

希望有所帮助!

答案 2 :(得分:0)

也许我们应该回到最初的要求:

  

在8 * 1D阵列中拆分这个2D阵列需要什么(每个块1个)

  

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

您可以使用这样的2D数组:

  • Key[0]将为您提供第一个子阵列(='row'),Key[1]第二个,依此类推。
  • Key[0][0]将为您提供第一个子阵列中的第一个元素,Key[0][1]第二个元素,依此类推。访问一个元素,比如Key[0][5],也可以表示为

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

第一行允许引用firstRow指向Key[0],i。即第一个子阵列。 firstRowKey[0]指向同一个数组 - 您似乎认为数组在您声明时会被复制:

  

No..no为什么我会把它们放在一个列表中,如果我要让它们回到另一个阵列中的位置。

ArrayList问题:

  

P.S arraylist的重点是稍后通过forloops获得更多操作的访问权限。任何帮助谢谢

如果使用ArrayLists重新构建该结构,任何事情都不会变得容易 - 除非你想分别向数组添加元素ArrayLists。