Java数据结构---稀疏数组写入读出文件
2022/1/25 12:37:30
本文主要是介绍Java数据结构---稀疏数组写入读出文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 基本介绍
- 一、代码
- 二、效果演示
基本介绍
当一个数组中大部分元素为0,或者为同一个值的时候,可以使用稀疏数组来保存该数组以节省空间.
处理方法:
1:记录源数组的行数列数与值(不重复)的数目
2:把这些值放在一个x行3列的二维数组中存储(x为有效值数+1)
如下图就是一个重复元素较多的数组,因此外面可以考虑采用稀疏数组的方式存储该数组
下图就是转换后的稀疏数组,其中第一行第一列代表源数组行数,第一行第二列代表源数组列数,第一行第三列代表源数组有效值个数.
之后的每一行的第一列代表有效值所在的行对应的数组索引,第二列代表有效值所在的列对应的数组索引,第三列代表对应的值
一、代码
package algorithm.DataStruct.Array; import java.io.*; import java.util.Arrays; /** * @author: Serendipity * Date: 2022/1/25 10:52 * Description:稀疏数组 x行3列(x为源数组数据个数+1) * arrays[0][0]=行数 arrays[0][1]=列数 arrays[0][2]=值数 * 第一列:源数据所在行 * 第二列:源数据所在列 * 第三列:源数据所在值 * 最后需要了解如何将数组写入并读出文件 */ public class SparseArray { private int row; private int col; private int val; public SparseArray() { } public SparseArray(int row, int col, int val) { this.row = row; this.col = col; this.val = val; } public int getRow() { return row; } public void setRow(int row) { this.row = row; } public int getCol() { return col; } public void setCol(int col) { this.col = col; } public int getVal() { return val; } public void setVal(int val) { this.val = val; } public static void main(String[] args) { final int ROW=5;final int COL=5; int[][]chess=new int[ROW][COL];int sum=0; SparseArray[]spareArr=new SparseArray[(int)Math.sqrt(chess.length)]; chess[1][2]=1;chess[2][3]=1; for(int i=0;i<chess.length;i++){ //显示棋盘 for (int j = 0; j < chess[i].length; j++) { System.out.printf("%5d",chess[i][j]); if(chess[i][j]!=0){ spareArr[sum++]=new SparseArray(i,j,chess[i][j]); } } System.out.println(); } int[][]sparseArray=new int[sum+1][3]; sparseArray[0][0]=chess.length;sparseArray[0][1]=chess[0].length;sparseArray[0][2]=sum; for(int i=1;i<sparseArray.length;i++){ sparseArray[i][0]=spareArr[i-1].getRow(); sparseArray[i][1]=spareArr[i-1].getCol(); sparseArray[i][2]=spareArr[i-1].getVal(); } // System.out.println(Arrays.deepToString(sparseArray)); try(FileWriter fw=new FileWriter(new File("D:\\desktopfile\\file.txt"))) { for(int i=0;i<sparseArray.length;i++){ for (int j=0;j<sparseArray[0].length;j++){ fw.write(sparseArray[i][j]+"\t"); } fw.write("\r\n"); } } catch (IOException e) { e.printStackTrace(); } String line;int[][]temp=null; try(BufferedReader br=new BufferedReader( new FileReader(new File("D:\\desktopfile\\file.txt")))){ while((line=br.readLine())!=null) { String[] split = line.split("\t"); //这个数组就3个元素 if(temp==null){ temp=new int[Integer.parseInt(split[0])][Integer.parseInt(split[1])]; }else { temp[Integer.parseInt(split[0])][Integer.parseInt(split[1])] = Integer.parseInt(split[2]); } } System.out.println(Arrays.deepToString(temp)); //二维数组就应该使用这个方法 }catch (IOException e){ e.printStackTrace(); } } }
二、效果演示
这篇关于Java数据结构---稀疏数组写入读出文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南