package com.itguigu.xishuarray;
import java.io.*;
public class Demo {
public static void main(String[] args) throws IOException {
//定义一个数组
int[][] arrs=new int[11][11];
//给两个默认初始值
arrs[1][2]=1;
arrs[2][3]=1;
for (int[] arr : arrs) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+"\t");
}
System.out.println();
}
int count=0;
//统计二维数组里的不为0的值
for (int i = 0; i < arrs.length; i++) {
for (int j = 0; j < arrs.length; j++) {
if(arrs[i][j]!=0){
count++;
}
}
}
//创建稀疏数组
int[][] sparseArray=new int[count+1][3];
//第一行记录原先数组的大小和有多少个值
sparseArray[0][0]=11;
sparseArray[0][1]=11;
sparseArray[0][2]=count;
int sum=0;
//遍历二维数组,压缩数组为稀疏数组
for (int i = 0; i <arrs.length ; i++) {
for (int j = 0; j < arrs.length; j++) {
if(arrs[i][j]!=0){
//记录有多少个有效值就是多少行
sum++;
sparseArray[sum][0]=i;
sparseArray[sum][1]=j;
sparseArray[sum][2]=arrs[i][j];
}
}
}
BufferedWriter bw = new BufferedWriter(new FileWriter("G:\\IdeaProjects\\JavaSe-Practise\\suanfa\\a.txt"));
for (int i = 0; i < sparseArray.length; i++) {
for (int j = 0; j < sparseArray.length; j++) {
bw.write(String.valueOf(sparseArray[i][j])+"\t");
System.out.print(sparseArray[i][j]+"\t");
}
bw.newLine();
System.out.println();
}
bw.close();
//还原数组
BufferedReader reader = new BufferedReader(new FileReader("suanfa\\a.txt"));
String len;
while ((len=reader.readLine())!=null){
System.out.println(len);
}
int[][] arr2=new int[sparseArray[0][0]][sparseArray[0][1]];
for (int i = 1; i < sparseArray.length; i++) {
arr2[sparseArray[i][0]][sparseArray[i][1]]=sparseArray[i][2];
}
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2.length; j++) {
System.out.print(arr2[i][j]+"\t");
}
System.out.println();
}
}
}