二维数组刚好对应现实中的二维空间;
取值起来刚好也很接近现实;
type[x][y]
同理也可以利用三维数组模拟一个三维空间坐标系;
等等🤷♀️,,那四维数组岂不是🤣🤣🤣🤣🤣
/**
* 矩阵类
*/
@Data
@AllArgsConstructor
public class Matrix {
private Integer row;// 行
private Integer col;// 列
private Integer[][] data;
public Matrix() {
this.data = new Integer[][]{};
}
public void setMatrix(Integer row, Integer col, Integer[][] data) {
this.data = data;
}
// 设置矩阵指定行指定列的值
public void setMatrix(int row, int col, Integer value) {
this.data[row - 1][col - 1] = value;
}
// 一次写入一行数据
public void setMatrixRow(int row, Integer[] rowData) {
// 长度不足时进行自动扩容
if (this.data.length <= row - 1) {
Integer[][] temp = this.data;
data = new Integer[row][];
System.arraycopy(temp, 0, data, 0, temp.length);
}
this.data[row - 1] = rowData;
}
// 获取指定行指定列的值
public Integer getMatrix(int row, int col) {
return this.data[row - 1][col - 1];
}
// 获取矩阵的高度[行数]
public int getHeight() {
return this.data.length;
}
// 获取某一行的长度
public int getWidthByRowNumber(int rowNumber) {
return this.data[rowNumber - 1].length;
}
// 获取某一行的全部数据
public Integer[] getRow(int rowNumber) {
return this.data[rowNumber - 1];
}
// 打印矩阵
public void printMatrix() {
int defaultSpace = 2;
for (Integer[] datum : data) {
for (int k = 0; k < datum.length; k++) {
if (k == 0)
System.out.print("|");
Integer integer = datum[k];
int number = integer.toString().length();
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < (defaultSpace - number); i++)
stringBuilder.append(" ");
stringBuilder.append("|");
String result = integer + stringBuilder.toString();
System.out.print(result);
}
System.out.println();
}
}
}