压缩和解析功能实现
import java.lang.reflect.Array;
public class Matrix {
public int[][] press(int[][] obj ){
int m=obj.length;
int n =obj[0].length;
int c=0;
for (int i =0;i<obj.length;i++){
for (int j=0;j<obj[0].length;j++){
if(obj[i][j]!=0){
c++;
}
}
}
int[][] arrayPress = new int[c+1][2];
arrayPress[0][0] = m;
arrayPress[0][1] = n;
int count =1;
for (int i =0;i<obj.length;i++){
for (int j=0;j<obj[0].length;j++){
if(obj[i][j]!=0){
arrayPress[count][0] = n*i+j;
arrayPress[count][1] = obj[i][j];
count++;
}
}
}
return arrayPress;
}
public int[][] analaysis(int[][] arrayPress){
int[][] array = new int[arrayPress[0][0]][arrayPress[0][1]];
for (int i=1;i<arrayPress.length;i++){
array[arrayPress[i][0]/arrayPress[0][1]][arrayPress[i][0]%arrayPress[0][1]] = arrayPress[i][1];
}
return array;
}
}
测试类
public class Test {
public static void main(String[] args) {
int[][] array = new int[6][6];
array[0][0] = 9;
array[1][4] = 6;
array[2][2] = 2;
array[4][4] = 8;
System.out.println("===============初始矩阵===============");
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
System.out.print(array[i][j]+" ");
}
System.out.println();
}
Matrix matrix = new Matrix();
System.out.println("============解压后得到的矩阵==========");
int[][] press = matrix.press(array);
for (int i = 0; i < press.length; i++) {
for (int j = 0; j < press[0].length; j++) {
System.out.print(press[i][j]+" ");
}
System.out.println();
}
System.out.println("============解析得到的矩阵=============");
int[][] analaysis = matrix.analaysis(press);
for (int i = 0; i < analaysis.length; i++) {
for (int j = 0; j < analaysis[0].length; j++) {
System.out.print(analaysis[i][j]+" ");
}
System.out.println();
}
}
}