Чтобы быть более ясным, матрица 1x1 должна иметь одно ложное значение. Каждая строка матрицы является объектом типа ArrayList<Boolean>
. Тогда общая матрица является ArrayList
этих объектов. Другими словами, матрица является объектом типа ArrayList<ArrayList<Boolean>>
.
Как и в C, это было бы
Container = new ArrayList()
Container.add(new ArrayList<>)[arrayList<Boolean>()]
Container[0].add($false)
или что-то типа того. Я просто смущен тем, как написать конструктор на Java, который был бы таким же.
Для матрицы 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);
Пример Матричный класс с конструктором 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);
}
}
get
из ArrayList
выбросить ArrayOutOfBoundException
Это создаст матрицу 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);
}
new
ключевых слов