如何在java中创建动态二维数组?

Ari*_*020 33 java multidimensional-array

我想动态创建一个二维数组.

我知道列数.但行数正在动态更改.我尝试了数组列表,但它仅将值存储在单维中.我能做什么?

pol*_*nts 38

由于列的数量是恒定的,你可以有一个Listint[].

    import java.util.*;
    //...

    List<int[]> rowList = new ArrayList<int[]>();

    rowList.add(new int[] { 1, 2, 3 });
    rowList.add(new int[] { 4, 5, 6 });
    rowList.add(new int[] { 7, 8 });

    for (int[] row : rowList) {
        System.out.println("Row = " + Arrays.toString(row));
    } // prints:
      // Row = [1, 2, 3]
      // Row = [4, 5, 6]
      // Row = [7, 8]

    System.out.println(rowList.get(1)[1]); // prints "5"
Run Code Online (Sandbox Code Playgroud)

由于它以a List为后盾,因此行数可以动态增长和缩小.每行都有一个int[]静态的支持,但是你说列的数量是固定的,所以这不是问题.


Tof*_*eer 16

Java中没有多维数组,但是有数组数组.

只需创建一个你想要的大型数组,然后为每个元素创建另一个数组,无论你想要的那个大.

int array[][];

array = new int[10][];

array[0] = new int[9];
array[1] = new int[8];
array[2] = new int[7];
array[3] = new int[6];
array[4] = new int[5];
array[5] = new int[4];
array[6] = new int[3];
array[7] = new int[2];
array[8] = new int[1];
array[9] = new int[0];
Run Code Online (Sandbox Code Playgroud)

或者:

List<Integer>[] array;

array = new List<Integer>[10];

// of you can do "new ArrayList<Integer>(the desired size);" for all of the following
array[0] = new ArrayList<Integer>();
array[1] = new ArrayList<Integer>();
array[2] = new ArrayList<Integer>();
array[3] = new ArrayList<Integer>();
array[4] = new ArrayList<Integer>();
array[5] = new ArrayList<Integer>();
array[6] = new ArrayList<Integer>();
array[7] = new ArrayList<Integer>();
array[8] = new ArrayList<Integer>();
array[9] = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)