int [][] array1 = new int[11][11];
array1[1][2] = 1;
array1[2][3] = 2;
print(array1);
//1.转换为稀疏数组保存
int sum = 0;
for(int i = 0;i<array1.length;i++){
for (int j = 0; j <array1[i].length ; j++) {
if(array1[i][j]!=0){
sum++;
}
}
}
int [][] array2 = new int[sum+1][3];
array2[0][0] =array1.length;
array2[0][1] =array1[0].length;
array2[0][2] =sum;
//遍历二维数组,将数组中非零的值,存放稀疏数组中
int count = 0;
for(int i = 0;i<array1.length;i++){
for (int j = 0; j <array1[i].length ; j++) {
if(array1[i][j]!=0){
count++;
array2[count][0] =i;//记录在第几个数组
array2[count][1] = j;//记录在此数组的第几个下标
array2[count][2] = array1[i][j];
}
}
}
//输出稀疏数组
print(array2);
//2.稀疏数组还原为原来数组
int[][] array3 = new int[array2[0][0]][array2[0][1]];
for (int i = 1; i <array2.length ; i++) {//用稀疏数组记录的行与列还原元素的位置
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
//打印
print(array3);
}
//遍历数组中的所有元素
public static void print (int [][] a){
for (int[] ints : a) {
for (int anInt : ints) {
System.out.print(anInt+" ");
}
System.out.println();
}
}