Java-Convert a two-dimensional array to a sparse array and restore the output and determine whether it is equal to the original array

public class ArrayDemo01 {
    
    
    public static void main(String[] args) {
    
    
        int[][] num;//声明一个int类型二维数组num
        num = new int[11][12];//创建一个11行12列的二维数组
        num[1][2]=1;
        num[2][3]=2;
        //输出原始数组
        System.out.println("输出原始数组");
        printarray(num);
        //输出稀疏数组
        //第一步 获取有效数值数量
        int valuenum = getvaluenum(num);
        //第二步 声明并且创建一个int类型稀疏数组
        int[][] newarray = new int[valuenum+1][3];
        newarray[0][0] = 11;
        newarray[0][1] = 12;
        newarray[0][2] = valuenum;
        //将原始数组的非零值记录在稀疏数组中,方法2选1
//        int count =1;
//        int count1 =0;
//        for(int i[]:num){
    
    
//            int count2 =0;
//            for (int i1 : i) {
    
    
//                if(i1!=0){
    
    
//                    newarray[count][2] = i1;
//                    newarray[count][1] = count2;
//                    newarray[count][0] = count1;
//                    count++;
//                }
//                count2++;
//            }
//            count1++;
//        }
        int count =1;
        for (int i = 1; i <num.length ; i++) {
    
    
            for (int j = 0; j <num[i].length ; j++) {
    
    
                if(num[i][j]!=0){
    
    
                    newarray[count][0] = i;
                    newarray[count][1] = j;
                    newarray[count][2] = num[i][j];
                    count++;
                }
            }
        }
        //输出稀疏数组
        System.out.println("输出稀疏数组");
        System.out.println("行\t列\t有效值");
        printarray(newarray);
        //将稀疏数组还原为初始数组
        int[][] oldarray =new int[newarray[0][0]][newarray[0][1]];
        for(int i = 1;i<=valuenum;i++) {
    
    
                oldarray[newarray[i][0]][newarray[i][1]] = newarray[i][2];
        }
        //输出还原后的初始数组
        System.out.println("输出还原后的初始数组");
        printarray(oldarray);
        //判断初始数组和还原后的初始数组是否相等
        boolean b =judge(num,oldarray);
        System.out.println("初始数组是否与还原后的初始数组相等? :"+b);
    }
    public static void printarray(int[][] num){
    
    
        for (int[] i : num) {
    
    
            for (int i1 : i) {
    
    
                System.out.print(i1+"\t");
            }
            System.out.println();
        }
    }
    public static int getvaluenum(int[][] num){
    
    
        int valuenum=0;
        for (int[] ints : num) {
    
    
            for (int anInt : ints) {
    
    
                if(anInt!=0) {
    
    
                    valuenum++;
                }
            }
        }
        System.out.println("原始有效数字的数量为 "+valuenum);
        return valuenum;
    }
    public static boolean judge(int[][]num,int[][] num1){
    
    
        boolean b = true;
        for (int i = 0; i <num.length ; i++) {
    
    
            for (int j = 0; j < num[i].length; j++) {
    
    
                if(num[i][j]!=num1[i][j]){
    
    
                    b = false;
                }
            }
        }
        return b;
    }
}

operation result:
Code execution result

  • Regarding the judgment of whether the contents of two two-dimensional arrays are equal
    Use the equals method under Arrays to not judge whether the contents of two two-dimensional arrays are equal, but you can judge whether two one-dimensional arrays are equal

Guess you like

Origin blog.csdn.net/qq_41017444/article/details/112723236