稀疏数组的完整代码
···
package Arrays.javabase;
public class ArraysDome14 {
public static void main(String[] args) {
//要得到稀疏数组
//创建一个11*11
int[][] arrays1 = new int[11][11];
arrays1[1][2] = 1;//放两个有效值
arrays1[2][3] = 2;//放两个有效值
//打印输出看下效果
for (int[] ints : arrays1) {
for (int anInt : ints) {
System.out.print(anInt + "\t");
}
System.out.println();
}
//转换为稀疏数组保存
//遍历到有效值
int sum = 0;
for (int i = 0; i < arrays1.length; i++) {
for (int j = 0; j < arrays1.length; j++) {
if (arrays1[i][j] != 0) {
sum++;
}
}
}
System.out.println("得到的有效值个数" + sum);
//2.创建一个稀疏数组的数组
int[][] arrays2 = new int[sum + 1][3];
arrays2[0][0] = 11;
arrays2[0][1] = 11;
arrays2[0][2] = sum;
// 遍历最初的二维数组吧有效值放到稀疏数组中
int count = 0;
for (int i = 0; i < arrays1.length; i++) {
for (int j = 0; j < arrays1[i].length; j++) {
if (arrays1[i][j] != 0) {
count++;
arrays2[count][0] = i;
arrays2[count][1] = j;
arrays2[count][2] = arrays1[i][j];
}
}
}
System.out.println("输出稀疏数组");
//打印输出稀疏数组的值
for (int i = 0; i < arrays2.length; i++) {
for (int j = 0; j < arrays2[i].length; j++) {
System.out.print(arrays2[i][j] + "\t");
}
System.out.println();
}
//1.还原到原始数组
int[][] arrays3=new int[ arrays2[0][0] ] [ arrays2[0][1] ];
// 2.吧稀疏数组的值还原回去
for (int i = 1; i <arrays2.length ; i++) {
arrays3[arrays2[i][0]][arrays2[i][1]]=arrays2[i][2];
}
//打印出还原的数组
for (int[] ints : arrays3) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}