1 public class demo04 {
2 public static void main(String[] args) {
3 //定义原始数组
4 int[][] array1 = new int[11][11];
5 array1[1][2] = 1;
6 array1[2][3] = 1;
7 //输出原始数组
8 System.out.println("====原始数组====");
9 for (int i = 0; i < array1.length; i++) {
10 for (int j = 0; j < array1[i].length; j++) {
11 int a = array1[i][j];
12 System.out.print(a);
13 }
14 System.out.println();
15 }
16 //获取有效值的个数
17 int sum = 0;
18 for (int i = 0; i < 11; i++) {
19 for (int j = 0; j < 11; j++) {
20 if (array1[i][j] != 0) {
21 sum++;
22 }
23 }
24 }
25 System.out.println("有效值个数为" + sum);
26
27 // 创建稀疏数组
28 int[][] array2 = new int[sum + 1][3];
29 array2[0][0] = 11;
30 array2[0][1] = 11;
31 array2[0][2] = sum;
32 int he = 0;
33 //遍历二维数组,将有效值录入稀疏数组中
34 for (int i = 0; i < array1.length; i++) {
35 for (int j = 0; j < array1[i].length; j++) {
36 if (array1[i][j] != 0) {
37 he++;
38 array2[he][0] = i;
39 array2[he][1] = j;
40 array2[he][2] = array1[i][j];
41 }
42 }
43 }
44 System.out.println("====稀疏数组====");
45 for (int i = 0; i < he; i++) {
46 System.out.println(array2[i][0] + "\t" + array2[i][1] + "\t" + array2[i][2] + "\t");
47 }
48 ;
49 //数组还原
50 System.out.println("====数组还原====");
51 //读取稀疏数组
52 int[][] array3 = new int[array2[0][0]][array2[0][1]];
53 //录入有效值
54 for (int i = 1; i < array2.length; i++) {
55 array3[array2[i][0]][array2[i][1]]=array2[i][2];
56 }
57 for (int i = 0; i < array3.length; i++) {
58 for (int j = 0; j < array3[i].length; j++) {
59 int a = array1[i][j];
60 System.out.print(a);
61 }
62 System.out.println();
63 }
64 }
65 }
![]()
![]()