2012-11-19 65 views
-1

整個事情是我有一個二維數組:如何索引數組列表中的數組?

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個新的一維數組以及數組列表將所有這些陣列在它:

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的第一個數組Arraylist

PS數組列表的整個要點是稍後通過forloops訪問更容易的操作。任何幫助感謝

我嘗試使用下面的嵌套的循環增加值:

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

它運行但值的arent一樣,當我輸出:

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"); 
    } 
+0

arrayList與2d數組一樣快。實際上我認爲它是在內部實現的。 – SJuan76

+0

列表實現類保存索引,可以使用list.set(index,elem)方法將元素放在指定的索引處。 – PermGenError

+0

請問我有一個語法示例嗎? – user1111726

回答

0

您可以訪問的元素通過使用list.get(i)的ArrayList。例如:

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

希望有所幫助!

+0

不..不知道爲什麼我會把它們放在一個列表中,如果我要把它們放回另一個數組中。 – user1111726

+0

我只是說這就是你如何訪問列表中的一個元素。你可以隨心所欲地做任何事情。 – awolfe91

+0

所以沒有辦法訪問arraylist中的數組,而不是隻訪問arraylist – user1111726

1

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

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

我將如何使用該技術。將Key中的第一行添加到arrayList中的第一個數組? – user1111726

+0

@ user1111726檢查我的編輯:) – PermGenError

+0

請檢查編輯 – user1111726

0

也許我們應該回到原來的要求:

需要在8 *一維數組拆分此二維數組(各1塊)

什麼

我需要的是一些方法來索引數組列表中的陣列

你可以用二維數組像這樣的工作:

  • Key[0]會給你第一子陣列(=「行」),Key[1]第二個,依此類推。
  • Key[0][0]會給你第一個子數組中的第一個元素,Key[0][1]第二個,依此類推。訪問的元素,可以說Key[0][5],也可以配製成

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

第一行讓參考firstRow指向Key[0],我。即第一個子陣列。 firstRowKey[0]指向相同的陣列 - 您似乎認爲該陣列在您聲明時被複制:

否..不,爲什麼我會把它們放在一個列表中,如果我要把它們放回另一個陣列中。

ArrayList的問題:

P.S ArrayList中的整點是後來獲得更容易通forloops例如更多的操作。任何幫助感謝

沒有任何事情,如果你重新構建結構的ArrayList獲得更輕鬆 - 除非你想添加元素分別陣列的ArrayList。