2

2D配列に値を追加するときに、2D配列の長さを2倍にしようとしています。1D配列の場合、このコードは次のとおりです。

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

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

したがって、2D配列があり、たとえば2列を維持しながら行数を2倍にしたい場合は、次のようにします。

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

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

ただし、これは2Dアレイでは機能しないようです。2D配列の長さを2倍にするにはどうすればよいですか。この場合、代わりに[20][2]にします。

4

2 に答える 2

5

Javaの2D配列は、配列の配列です。それを2倍にするには、配列の各行を手動で繰り返し、そのすべての列を順番にコピーする必要があります。

于 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 に答える