有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

更改Java数组的维数

有没有办法改变数组的维数,也就是说

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

但是像这样使用它

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

?


共 (2) 个答案

  1. # 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。。。。xn阵列非常昂贵

    有关更多详细信息:Flatten nested arrays in java

  2. # 2 楼答案

    Java是静态类型语言。这意味着您不能在运行时更改变量的类型。但在这种特殊情况下,您可以简单地使用以下调用:

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