一.稀疏数组的概念
当一个二维数组大部分数据为0或相同时,可以用稀疏数组来表示
二.代码实现
1.自定义的二维数组
String[][] array = new String[11][11];
array[1][2]="1";
array[2][3]="2";
for(String[] row:array){
for(String data:row){
if(data==null){
data="0";
}
}
}
2.将二维数组转换为稀疏数组
int count1 = 0;
int count2 = 0;
int count3 = 0;
for(String[] row:array){
for(String data:row){
if(data!=null){
count1++;
}
count2++;
}
count3++;
}
String[][] sparseArray = new String[count1+1][3];
sparseArray[0][0]=count3+"";
sparseArray[0][1]=count2+"";
sparseArray[0][2]=count1+"";
int sum1 = 0;
int sum3 = 0;
for(String[] row:array){
int sum2 = 0;
for(String data:row){
if(data!=null){
sum3++;
sparseArray[sum3][0]=sum1+"";
sparseArray[sum3][1]=sum2+"";
sparseArray[sum3][2]=data;
}
sum2++;
}
sum1++;
}
3.将稀疏数组写出去
File file = new File("C:/Users/Administrator/Desktop/aaa.txt");
Writer out = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(out);
for(String[] row:sparseArray){
for(String data:row){
bw.write(data+"\t");
}
bw.newLine();
}
out.flush();
bw.flush();
out.close();
bw.close();
4.将稀疏数组读进来
File file1 = new File("C:/Users/Administrator/Desktop/aaa.txt");
Reader reader = new FileReader(file1);
BufferedReader br = new BufferedReader(reader);
String str = "";
int num2 = 0;
String[][] array2 = null;
while((str = br.readLine())!=null){
String[] array3 = str.split("\\s");
if(num2==0){
array2 = new String[new Integer(array3[0])][new Integer(array3[1])];
}else{
array2[new Integer(array3[0])][new Integer(array3[1])]=array3[2];
}
num2++;
}
reader.close();
br.close();
for(String[] row:array2){
for(String data:row){
if(data==null){
data="0";
}
}
}
5.将稀疏数组转换为二维数组
int num = 0;
for(String[] row:sparseArray){
num++;
if(num==1){
continue;
}else {
array2[new Integer(row[0])][new Integer(row[1])] = row[2];
}
}
for(String[] row:array2){
for(String data:row){
if(data==null){
data=0+"";
}
System.out.print(data+"\t");
}
System.out.println();
}