在Java中,二维数组的动态扩容可以通过以下几种方法实现:
使用ArrayList
ArrayList是Java中的一个集合类,它可以动态地调整大小,因此可以用来实现二维数组的动态扩容。
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList> arrayList = new ArrayList<>();
arrayList.add(new ArrayList
() {{ add(1);
add(2);
add(3);
}});
arrayList.add(new ArrayList
() {{ add(4);
add(5);
}});
// 添加新元素
arrayList.get(0).add(4);
arrayList.get(1).add(5);
// 打印二维数组
for (ArrayList
list : arrayList) { for (int i : list) {
System.out.print(i + " ");
}
System.out.println();
}
}
}
使用System.arraycopy
可以通过创建一个新的二维数组,然后使用`System.arraycopy`方法将原数组的元素复制到新数组中,从而实现扩容。
public class Main {
public static void main(String[] args) {
int[][] originalArray = {{1, 2, 3}, {4, 5}};
int[][] newArray = new int[originalArray.length + 1][originalArray.length + 1];
// 复制原始元素到新数组
System.arraycopy(originalArray, 0, newArray, 0, originalArray.length);
// 添加新元素
newArray[originalArray.length][originalArray.length] = 6;
// 打印二维数组
for (int i = 0; i < newArray.length; i++) {
for (int j = 0; j < newArray[i].length; j++) {
System.out.print(newArray[i][j] + " ");
}
System.out.println();
}
}
}
使用Arrays.copyOf
`Arrays.copyOf`方法可以用来创建一个新的二维数组,并将原数组的元素复制到新数组中。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[][] originalArray = {{1, 2, 3}, {4, 5}};
int[][] newArray = Arrays.copyOf(originalArray, originalArray.length + 1);
// 添加新元素
newArray[originalArray.length] = new int[]{6};
// 打印二维数组
for (int i = 0; i < newArray.length; i++) {
for (int j = 0; j < newArray[i].length; j++) {
System.out.print(newArray[i][j] + " ");
}
System.out.println();
}
}
}
以上三种方法都可以实现二维数组的动态扩容。选择哪种方法取决于具体的应用场景和个人偏好。需要注意的是,使用`ArrayList`时,扩容操作是自动进行的,而使用`System.arraycopy`和`Arrays.copyOf`时,需要手动进行扩容操作。