Как я могу написать конструктор по умолчанию для матрицы 1x1 с ArrayList (в Java)?

1

Чтобы быть более ясным, матрица 1x1 должна иметь одно ложное значение. Каждая строка матрицы является объектом типа ArrayList<Boolean>. Тогда общая матрица является ArrayList этих объектов. Другими словами, матрица является объектом типа ArrayList<ArrayList<Boolean>>.

Как и в C, это было бы

 Container = new ArrayList()
 Container.add(new ArrayList<>)[arrayList<Boolean>()]
 Container[0].add($false)

или что-то типа того. Я просто смущен тем, как написать конструктор на Java, который был бы таким же.

  • 1
    В C. нет конструкторов и new ключевых слов
  • 1
    почему вы отметили этот вопрос с?
Показать ещё 1 комментарий
Теги:
arraylist
matrix

3 ответа

2
Лучший ответ

Для матрицы nRows x nCols:

ArrayList<ArrayList<Boolean>> matrix = new ArrayList<>(nRows);
for(int r = 0 ; r < nRows ; r++) {
    ArrayList<Boolean> row = new ArrayList<>(nCols);
    for(int c = 0 ; c < nCols ; c++) {
        row.add(false);
    }
    matrix.add(row);
}

Для 1 x 1:

ArrayList<ArrayList<Boolean>> matrix = new ArrayList<>(1);
ArrayList<Boolean> row = new ArrayList<>(1);
row.add(false);
matrix.add(row);
2

Пример Матричный класс с конструктором nxm:

public class Matrix extends ArrayList<ArrayList<Boolean>> {

    private static final long serialVersionUID = 1L;

    public Matrix(int rowNum, int colNum) {
        super(rowNum);

        for (int row=0; row<rowNum; row++) {
            ArrayList<Boolean> rowList = new ArrayList<Boolean>(colNum);
            add(rowList);
            for (int col=0; col<colNum; col++) {
                rowList.add(false);
            }
        }
    }

    public void set(int row, int col, Boolean value) {
        get(row).set(col, value);
    }

    public Boolean get(int row, int col) {
        return get(row).get(col);
    }

}
  • 2
    Вам не нужно проверять границы, просто позвольте get из ArrayList выбросить ArrayOutOfBoundException
  • 0
    @Жан Ложарт: удалено.
2

Это создаст матрицу nxn:

    ArrayList<ArrayList<boolean>> matrix = new ArrayList<ArrayList<boolean>>(n);
    for(int i = 0; i < n; i++) {
        ArrayList<boolean> row = new ArrayList<boolean>(n);
        for(int j = 0; j < n; j++) {
           row.add(false);
        }
        lists.add(row);
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню