2

当我向它添加值时,我试图将二维数组的长度加倍。我知道一维数组的代码是:

int oneD[] = new int[10];
//fill array here

oneD = Arrays.copyOf(oneD, 2 * oneD.length);

因此,如果我有一个 2D 数组并且只想在保持 2 列的同时将行数增加一倍,我想我会这样做:

int twoD[][] = new int[10][2];
//fill array here

twoD = Arrays.copyOf(twoD, 2* twoD.length);

然而,这似乎不适用于二维数组。如何将二维数组的长度加倍。在这种情况下,改为 [20][2]。

4

2 回答 2

5

Java 中的二维数组是数组的数组。为了将它加倍,您必须手动迭代数组中的每一行并依次复制其所有列。

于 2012-10-25T20:46:14.030 回答
0

在你的情况下,这样的事情可以完成:

public static <T> T[][] copyOf(T[][] array, int newLength) {
    // ensure that newLength >= 0
    T[][] copy = new T[newLength][];
    for (int i = 0; i < copy.length && i < array.length; i++) {
        copy[i] = Arrays.copyOf(array[i], array[i].length);
        // this should also work, just not create new array instances:
        // copy[i] = array[i];
    }
    return copy;
}

你可以调用这个方法,就像你调用的一样Arrays.copyOf()

于 2012-10-25T21:10:29.307 回答