public class OriginArray {
public static void main(String[] args) {
// 定义一个稀疏数组
int[][] sparseArray = initSparseArray();
System.out.println("======================稀疏数组======================");
for (int[] row : sparseArray) {
for (int data : row) {
System.out.printf("%d\t", data);
}
System.out.println();
}
// 把稀疏数组转成二维数组
int[][] originArray = transToOriginArray(sparseArray);
System.out.println("======================二维数组======================");
for (int[] row : originArray) {
for (int data : row) {
System.out.printf("%d\t", data);
}
System.out.println();
}
}
private static int[][] transToOriginArray(int[][] sparseArray) {
// 根据稀疏数组的第一行初始化二维数组
int[][] originArray = initOriginArray(sparseArray[0]);
// 根据稀疏数组第二行开始给二维数组赋值
assembleOriginArray(originArray, sparseArray);
return originArray;
}
private static void assembleOriginArray(int[][] originArray, int[][] sparseArray) {
for (int i = 1; i < sparseArray.length; i++) {
int row = sparseArray[i][0];
int col = sparseArray[i][1];
int value = sparseArray[i][2];
originArray[row][col] = value;
}
}
private static int[][] initOriginArray(int[] firstRow) {
int row = firstRow[0];
int col = firstRow[1];
return new int[row][col];
}
private static int[][] initSparseArray() {
int[][] sparseArray = new int[5][3];
sparseArray[0][0] = 11;
sparseArray[0][1] = 11;
sparseArray[0][2] = 3;
sparseArray[1][0] = 1;
sparseArray[1][1] = 2;
sparseArray[1][2] = 1;
sparseArray[2][0] = 3;
sparseArray[2][1] = 4;
sparseArray[2][2] = 2;
sparseArray[3][0] = 5;
sparseArray[3][1] = 6;
sparseArray[3][2] = 3;
sparseArray[4][0] = 7;
sparseArray[4][1] = 8;
sparseArray[4][2] = 4;
return sparseArray;
}
}
======================稀疏数组======================
11 11 3
1 2 1
3 4 2
5 6 3
7 8 4
======================二维数组======================
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 2 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 3 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 4 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
Process finished with exit code 0