更改Java数组具有的维数

时间:2018-05-20 01:36:15

标签: java arrays

有没有办法改变数组的维数,即制作这个

int[][] i = new int[3][3];

但是像这样使用它

getArray(i); //where getArray only accepts one dimensional arrays

2 个答案:

答案 0 :(得分:1)

您无法更改Java数组或数组类型中的维数。

但是你可以利用Java数组是一个对象...以及子类型...并声明一个getArray方法这样的事实:

 Object getArray(Object[], ...) { .... }

您可以在int[][]实例上调用此方法,但需要运行时类型转换才能将结果转换为int[]

例如:

Object getArray(Object[] array, int i) { return array[i]; }

int[][] big = new int[3][3];
int[] slice = (int[]) getArray(big, 0);

另一方面,如果您真的在询问如何将多维数组展平变成一维数组,那么getArray方法需要分配一个新数组,从原件填充并返回它。

请注意,您将返回一个与原始数组无关的全新数组。复制N x N .... x N阵列很昂贵。

有关详情:Flatten nested arrays in java

答案 1 :(得分:0)

Java是静态类型语言。这意味着您无法在运行时更改变量的类型。但在这种特殊情况下,您只需使用以下调用:

getArray(i[2]); // put anything between 0 and (outerArrayLength-1) instead of 2 here