2013-10-16 22 views
0

是否可以將數組放入二維數組中?爲了解釋:我需要一個二維字節數組,但是我也需要每個單元的三個字節值。它看起來是這樣的:數組內的二維數組?

+-------------+-------------+ 
| 123,234,125 | 255,109,167 | 
+-------------+-------------+ 
| 172,144,134 | 145,212,124 | 
+-------------+-------------+ 

或者在更適當的格式:

[ [ [ 123,234,125 ] , [ 255,109,167 ] ] , [ [ 172,144,134 ] , [ 145,212,124 ] ] ] 

這將是包含三個字節數組二維數組。這在Java中可能嗎?

+2

爲什麼你認爲這是不可能的? –

+2

聽起來像你想[三維數組](http://stackoverflow.com/questions/11623990/understanding-three-dimensional-arrays)。 – thegrinner

+0

這已問 http://stackoverflow.com/questions/4781100/how-to-make-an-array-of-arrays-in-java – jessebs

回答

3

完全可能。

下面是一個例子:

byte[][][] myAwesomeByteArray = 
      { 
       { 
        { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 } 
       }, 
       { 
        { 9, 10, 11 }, { 12, 13, 14 }, { 15, 16, 17 } 
       }, 
       { 
        { 18, 19, 20 }, { 21, 22, 23 }, { 24, 25, 26 } 
       } 
      }; 
System.out.println(Arrays.deepToString(myAwesomeByteArray)); 

輸出:

[[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[9, 10, 11], [12, 13, 14], [15, 16, 17]], [[18, 19, 20], [21, 22, 23], [24, 25, 26]]] 
+0

+1爲陣列的名稱 –

+0

@HussainAkhtarWahid: d – Mena

2

是的,當然這是可能的。您可以使用3D陣列:

byte[][][] array = new byte[w][h][3]; 
array[0][0][0] = 123; 
array[0][0][1] = 234; 
array[0][0][2] = 125; 

或使用二維整數數組。整數是4個字節,它足夠滿足您的要求:

int[][] array = new int[w][h]; 
array[0][0] = (123 << 16) | (234 << 8) | (125); 
2

有兩種基本的方式做你正在嘗試做的。這裏有兩個例子可供嘗試。

int [][][] firstArray = new int[][][] {{{ 123,234,125 } , { 255,109,167 }} , {{ 172,144,134 } , { 145,212,124 }}}; 

int [][][] secondArray = new int[2][2][3]; 

第一個示例假設你知道內容是什麼的陣列,第二種爲您提供了餡的數據更多的靈活性。

希望它有幫助,讓我知道如果你需要更多。

0

您可以嘗試使用此代碼,但只需稍作修改即可根據您的要求更改此代碼。這裏插入的所有值都是靜態的,您可以將其設置爲動態&插入。根據您的要求將int更改爲字節。

public static void main(String args[]) 
{ 
    /*Data Insertion*/ 
    int a[]=new int[3]; 
    a[0]=123; 
    a[1]=234; 
    a[2]=125; 
    int a1[]=new int[3]; 
    a1[0]=255; 
    a1[1]=109; 
    a1[2]=167; 
    int a2[]=new int[3]; 
    a2[0]=172; 
    a2[1]=144; 
    a2[2]=134; 
    int a3[]=new int[3]; 
    a3[0]=145; 
    a3[1]=212; 
    a3[2]=124; 
    Object s[][]=new Object[2][2]; 
    s[0][0]=a; 
    s[0][1]=a1; 
    s[1][0]=a2; 
    s[1][1]=a3; 
    /*Data Retrieval*/ 
    for(int i=0;i<s.length;i++) 
    { 
     for(int j=0;j<2;j++) 
     { 
      int sg[]=(int[])s[i][j];  
      System.out.println("Value: "+sg[0]+" "+sg[1]+" "+sg[2]); 
     } 
    } 
} 
0

正如其他人指出的,這是可能的。

懷疑時,想想其他的方式:有沒有理由這不是可能嗎?在數學和編程中,它通常是這樣的:任何不明確禁止的東西都是允許的。

一個數組可以包含任何類型的元素。那麼爲什麼不是數組?

現在考慮數組中的數組:它們的元素是什麼類型?看到前面的段落,然後儘可能深入/深入,因爲它沒有說明你能夠走多遠/多遠。除了內存限制等問題外......