как создать динамическую двумерную матрицу в Java?

Я хочу создать двумерную матрицу динамично.

Я знаю число столбцов. Но количество строк изменяется динамично. Я попробовал список массива, но он хранит значение в единственном размере только. Что я могу сделать?

33
задан Tanmay Patil 15 March 2014 в 13:48
поделиться

3 ответа

Поскольку количество столбцов является константой, вы можете просто иметь Список из int [] .

    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"

Поскольку он поддерживается списком List , количество строк может увеличиваться и уменьшаться динамически. Каждая строка поддерживается int [] , который является статическим, но вы сказали, что количество столбцов фиксировано, поэтому это не проблема.

38
ответ дан 27 November 2019 в 18: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];

Альтернативно:

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>();
16
ответ дан 27 November 2019 в 18:16
поделиться

Как насчет создания настраиваемого класса, содержащего массив, и использования массива вашего настраиваемого класса.

1
ответ дан 27 November 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: