Java 扩展多维数组(2D)

Java 扩展多维数组(2D),java,multidimensional-array,extension-methods,Java,Multidimensional Array,Extension Methods,如何在Java中扩展多维数组? 我需要扩展它的第一个维度。它的格式是 myArray[x][7] 7将在所有扩展部分上保持为7。如果要这样做,请创建一个包含数组作为实例变量的类,并处理与它的所有交互。Java中的数组具有固定长度,因此无法真正扩展它。您必须创建一个新的、更大的数组,然后将旧数组的内容复制到新数组中。像这样: public class Test { public static void main(String[] args) { int[][] myArr

如何在Java中扩展多维数组?
我需要扩展它的第一个维度。它的格式是
myArray[x][7]


7将在所有扩展部分上保持为7。

如果要这样做,请创建一个包含数组作为实例变量的类,并处理与它的所有交互。

Java中的数组具有固定长度,因此无法真正扩展它。您必须创建一个新的、更大的数组,然后将旧数组的内容复制到新数组中。像这样:

public class Test {

    public static void main(String[] args) {
        int[][] myArray = new int[3][7];

        // Print first dimension
        System.out.println(myArray.length);   // prints 3

        myArray = addRow(myArray);

        // Print first dimension
        System.out.println(myArray.length);   // prints 4

    }

    private static int[][] addRow(int[][] previous) {

        int prevRowCount = previous.length;

        int[][] withExtraRow = new int[prevRowCount + 1][];
        System.arraycopy(previous, 0, withExtraRow, 0, previous.length);
        withExtraRow[prevRowCount] = new int[] { 1, 2, 3, 4, 5, 6, 7 };

        return withExtraRow;
    }

}

当然,您也可以使用动态增长的
ArrayList
。(这实际上是处理动态增长阵列时的首选方法。)

import java.util.*;
公开课考试{
公共静态void main(字符串[]args){
List myArray=new ArrayList();
//打印第一维度
System.out.println(myArray.size());//打印0
//添加三行
添加(新的int[{1,2,3,4,5,6,7});
添加(新的int[{11,12,13,14,15,16,17});
添加(新的int[{21,22,23,24,25,26,27});
//打印第一维度
System.out.println(myArray.size());//打印3
}
}
你不能


您可以创建具有正确维度的新数组,但我建议您阅读有关ArrayList类的内容,该类(据您所知)允许使用动态数组。

您也可以使用arrays.copyOf方法,例如:

import java.util.Arrays;

public class Array2D {
    public static void main(String[] args) {
        int x = 5 //For example
        int[][] myArray = [x][7];

        myArray = Arrays.copyOf(myArray, myArray.length + 1); //Extending for one
        myArray[myArray.length - 1] = new int[]{1, 2, 3, 4, 5, 6, 7};
    }
}
import java.util.Arrays;

public class Array2D {
    public static void main(String[] args) {
        int x = 5 //For example
        int[][] myArray = [x][7];

        myArray = Arrays.copyOf(myArray, myArray.length + 1); //Extending for one
        myArray[myArray.length - 1] = new int[]{1, 2, 3, 4, 5, 6, 7};
    }
}