当我向其添加值时,我正试图将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]。
答案 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()