从字面上构建我自己的多维锯齿阵列

时间:2018-11-01 09:51:39

标签: java arrays jagged-arrays

谁能告诉我这种创建数组的方法有什么问题,看来仍然可行:

Object [] a = new Object[5];        
Object [] b = new Object[5];
Object [] c = new Object[5];
Object [] d = new Object[6];
Object [] e = new Object[5];

a[1] = b;
a[2] = c;
b[1] = d;
d[1] = e;
a[1][2] = c; // error, how do I make this work if I insist of building my array like this?

我到底做了什么?从技术上讲,这是多维数组吗?为什么我不能使用例如a [1] [2] [2]来访问元素,如何以类似的方式访问数据?

2 个答案:

答案 0 :(得分:0)

在下面的代码中,您创建了5个类型为Object的数组。

Object [] a= new Object[5];     
Object [] b= new Object[5];
Object [] c= new Object[5];
Object [] d= new Object[6];
Object [] e= new Object[5];

现在,当您这样做时:

a[1]=b;
a[2]=c;
b[1]=d;
d[1]=e;

您只是将数组的各个索引分配给另一个引用。 (在您的情况下碰巧是对数组的引用)

发生编译错误的行是因为a[]不是2D数组。

a[1][2]=c;

创建锯齿阵列

使用以下任何一种语法:

int[][] jaggedArr = {{1, 2}, {3, 4, 5}, {6, 7, 8, 9}};

OR

int[][] jaggedArr = new int[3][];
jaggedArr[0] = new int[] {1, 2};
jaggedArr[1] = new int[] {3, 4, 5};
jaggedArr[2] = new int[] {6, 7, 8, 9};

this链接中的更多内容。

答案 1 :(得分:0)

我假设您知道obj []实际上是一个参考值,因此,我正在寻找“将对象带出该参考值”的方法,因此可以使用数组operator []来访问该值。例如,我声明一个一维数组,就像我在原始问题中一样,因此可以使用a [1]。[2]访问存储在a [1]

中的数组中的值
Object [] a= new Object[5]; 
Object [] b= new Object[5];
a[1] = b;

因此,也许a [1]会导致将对象带出a [1]中的参考值b [],然后使用[2]来得出b [2]处的值存储。