二维数组 和 稀疏数组的相互转换 及 数据存入文件中

左心房为你撑大大i 提交于 2019-11-29 17:22:07

二维数组  和 稀疏数组的相互转换 及 数据存入文件中

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

/*
稀疏数组 和 二维数组
 */
public class SparseArray {
    public static void main(String[] args) throws IOException {

        //原始的二维数组的大小
        int[][] array = new int[11][11];
        array[1][3] = 1;
        array[2][4] = 2;
        array[2][5] = 2;
        array[2][7] = 2;

        System.out.println("原始的二维数据");
        for (int[] row : array) {
            for (int data : row) {
                System.out.printf("%d\t", data);
            }
            System.out.println();
        }
        //获取sum的个数
        int sum = 0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (array[i][j] != 0) {
                    sum++;
                }
            }
        }

        //创建稀疏数组
        int[][] parse = new int[sum + 1][3];
        parse[0][0] = 11;
        parse[0][1] = 11;
        parse[0][2] = sum;
        //稀疏数组赋值
        int count = 0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (array[i][j] != 0) {
                    count++;
                    parse[count][0] = i;
                    parse[count][1] = j;
                    parse[count][2] = array[i][j];

                }
            }
        }
        //打印输出稀疏数组
        for (int i = 0; i < parse.length; i++) {
            System.out.printf("%d\t%d\t%d\t\n", parse[i][0], parse[i][1], parse[i][2]);
        }
        System.out.println();
        //1.创建源
        File dest = new File("SpasreArray.data");
        //2.选择流:之所以选择字符流进行操作,主要由于其比字节流分割字符相比有分割方便的方法
        Writer os = null;
        os = new FileWriter(dest);
        //3.进行数据的拷贝,其中\t,即table符号,作为数字的分隔符(主要是数字的位数在此例中是不确定的)
        for (int i = 0; i < parse.length; i++) {
            for (int j = 0; j < 3; j++) {
                os.write(parse[i][j] + "\t");
            }
            os.write("\r\n");
        }
        //4.释放资源
        os.close();
System.out.println("稀疏数组恢复二维数组");int [][]array1 = new int[parse[0][0]][parse[0][1]];for (int i = 1; i < parse.length; i++) {    array1[parse[i][0]][parse[i][1]] = parse[i][2];}for (int[] row : array1) {    for (int data : row) {        System.out.printf("%d\t",data);    }   System.out.println();}
} }
控制台打印"C:\Program Files\Java\jdk1.8.0_91\bin\java.exe" "-javaagent:D:\IntelliJ IDEA 2018.2.4\lib\idea_rt.jar=56550:D:\IntelliJ IDEA 2018.2.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_91\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\rt.jar;E:\idearproject\Test1\out\production\Test1" SparseArray
原始的二维数据
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    1    0    0    0    0    0    0    0    
0    0    0    0    2    2    0    2    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
打印二维数组转换为稀疏数组
11    11    4    
1    3    1    
2    4    2    
2    5    2    
2    7    2    

稀疏数组恢复二维数组
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    1    0    0    0    0    0    0    0    
0    0    0    0    2    2    0    2    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    

Process finished with exit code 0

本地文件:

11    11    4    
1    3    1    
2    4    2    
2    5    2    
2    7    2    

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!