是否可以将数组放入二维数组中?解释:我需要一个二维字节数组,但每个单元格还需要三个字节值。它看起来像这样:
+-------------+-------------+
| 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中可行吗?
答案 0 :(得分: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]]]
答案 1 :(得分:2)
是的,当然这是可能的。您可以使用3D阵列:
byte[][][] array = new byte[w][h][3];
array[0][0][0] = 123;
array[0][0][1] = 234;
array[0][0][2] = 125;
或使用2D数组的整数。整数是4个字节,足以满足您的要求:
int[][] array = new int[w][h];
array[0][0] = (123 << 16) | (234 << 8) | (125);
答案 2 :(得分:2)
有两种基本方法可以完成您要做的事情。这里有两个尝试的例子。
int [][][] firstArray = new int[][][] {{{ 123,234,125 } , { 255,109,167 }} , {{ 172,144,134 } , { 145,212,124 }}};
int [][][] secondArray = new int[2][2][3];
第一个示例假设您确切知道数组的内容是什么,第二个示例使您在填充数据时更加灵活。
希望它有所帮助,如果您需要更多,请告诉我。
答案 3 :(得分:0)
您可以尝试使用此代码,但只需进行少量修改即可根据您的要求进行更改。此处插入的所有值都是静态的,您可以将其设置为动态&amp;插入。根据您的要求将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]);
}
}
}
答案 4 :(得分:0)
正如其他人指出的那样,这是可能的。
当怀疑时,请考虑其他方式:是否有理由认为不可能?在数学和编程中,它通常采用这种方式:允许任何未被明确禁止的内容。
数组可以包含任何类型元素。那为什么不是阵列?
现在考虑一个数组中的数组:它们的元素是什么类型的?参见上一段,然后根据需要尽可能远/深,因为它没有说明你可以走多远/多远。除了内存限制等问题......