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中可能吗?

4

5 回答 5

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]]]
于 2013-10-16T17:33:11.893 回答
2

有两种基本方法可以做你想做的事情。这里有两个例子可以试一试。

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

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

第一个示例假定您确切知道数组的内容是什么,而第二个示例在填充数据时为您提供了更多的灵活性。

希望对您有所帮助,如果您需要更多,请告诉我。

于 2013-10-16T17:37:19.840 回答
2

是的,这当然是可能的。您可以使用 3D 数组:

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

或者使用整数的二维数组。ints 是 4 个字节,足以满足您的要求:

int[][] array = new int[w][h];
array[0][0] = (123 << 16) | (234 << 8) | (125);
于 2013-10-16T17:33:01.097 回答
0

您可以尝试使用此代码,但只需进行少量修改,您就可以根据您的要求进行更改。此处插入的所有值都是静态的,您可以将其设置为动态和插入。根据您的要求将 int 更改为 byte。

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]);
        }
    }
}
于 2013-10-16T18:00:45.747 回答
0

正如其他人指出的那样,这是可能的。

怀疑时,换个角度思考:有没有理由这不应该可能的?在数学和编程中,通常是这样的:没有明确禁止的,都是允许的。

数组可以包含任何类型的元素。那么为什么不是数组呢?

现在考虑数组中的数组:它们的元素是什么类型?请参阅上一段,然后随心所欲地走多远/多深,因为它没有说明您可以走多远/多深。除了内存限制等问题...

于 2014-11-12T11:26:11.387 回答