public class SparseArray {public static final int NUM=10;public int[][] chees ;public int[][] sparse;public int[][] chees2;public int sum;public void setChees(int chees[][]) {chees[1][2]=1;chees[2][3]=2;chees[1][6]=2;chees[0][0]=2;}public void cheestosparse(int[][] chees,int sparse[][]) {sparse[0][0]=NUM;sparse[0][1]=NUM;sparse[0][2]=sum;int count=0;for(int i=0;i<NUM;i++) {for(int j=0;j<NUM;j++) {if(chees[i][j]!=0) {count++;sparse[count][0]=i;sparse[count][1]=j;sparse[count][2]=chees[i][j];}}}}public void sparse2chees(int[][] sparse,int[][] chees2) {for(int i=1;i<sparse.length;i++) {chees2[sparse[i][0]][sparse[i][1]]=sparse[i][2];}}public void printArray(int[][] array) {for(int[] row:array) {for(int date:row) {System.out.printf("%d\t",date);}System.out.printf("\n");}} public int count(int[][] array) {for(int i=0;i<NUM;i++) {for(int j=0;j<NUM;j++) {if(array[i][j]!=0) {sum++;}}}return sum;}public static void main(String[] args) {SparseArray s = new SparseArray();s.chees=new int[NUM][NUM];s.setChees(s.chees);System.out.println("原始的二维数组");s.printArray(s.chees);s.sum=s.count(s.chees);s.sparse=new int[s.sum+1][3];s.cheestosparse(s.chees,s.sparse);System.out.println("得到的稀疏数组");s.printArray(s.sparse);s.chees2 = new int[s.sparse[0][0]][s.sparse[0][1]];s.sparse2chees(s.sparse,s.chees2);System.out.println("恢复后的二维数组");s.printArray(s.chees2);}}