第一行存的是原数组的行数列数,有效值个数,下面的存放每一个有效值的行纵坐标以及值

//创建一个稀疏数组,稀疏数组的意义在于,数组中有大量数字相同的情况下,存储有效数据
//创建一个新的稀疏数组,
/**
* 二维数组本质上,可以理解为 是两个数组进行嵌套
*
*/
int[][] array=new int[11][11];
array[2][3]=2;
array[1][3]=2;
// 遍历数组
for(int[] arr:array){
for (int i:arr){
System.out.print(i+"\t");
}
System.out.println();
}

需要用双层for each循环遍历数组
转换稀疏数组之前,先获得数组中的有效数字sum
int sum=0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j]!=0){
sum+=1;
}
}
}
System.out.println("有效个数为:"+sum);
转换稀疏数组 array1,并遍历array1
int[][] array1=new int[sum+1][3];
array1[0][0]=11;
array1[0][1]=11;
array1[0][2]=2;
int total=0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j]!=0){
total++;
array1[total][0]=i;
array1[total][1]=j;
array1[total][2]=array[i][j];
}
}
}
for(int[] arr:array1){
for (int i:arr){
System.out.print(i+"\t");
}
System.out.println();
}

并通过稀疏数组进行一个还原,并且遍历还原的数组,进行比对

浙公网安备 33010602011771号