有没有办法改变数组的维数,即这样做
int[][] i = new int[3][3];
但是像这样使用它
getArray(i); //where getArray only accepts one dimensional arrays
?
最佳答案
您无法更改 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 数组的成本很高。
关于java - 更改 Java 数组的维数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50430942/