二维长度的二维数组

时间:2012-10-25 20:43:40

标签: java arrays

当我向其添加值时,我正试图将2D数组的长度加倍。我知道1D数组的代码是:

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);

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

2 个答案:

答案 0 :(得分:5)

Java中的2D数组是一个数组数组。为了加倍,你必须手动迭代数组中的每一行并依次复制它的所有列。

答案 1 :(得分: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()

一样