稀疏数组
public class XsArrays {
public static void main(String[] args) {
int[][] array = new int[10][10];
array[1][1] = 1;
array[2][2] = 2;
System.out.println("原始数组为:");
for (int[] i : array) {
for (int j : i) {
System.out.print(j + " ");
}
System.out.println();
}
int sum = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
if (array[i][j] != 0) {
++sum;
}
}
}
System.out.println("=========================");
int[] arrayss = new int[0];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
if (array[i][j] > 0) {
arrayss = arrayAdd(arrayss, array[i][j]);
}
}
}
System.out.print("有效值个数有" + sum + "个,分别是:");
for (int j : arrayss) {
System.out.print(j + " ");
}
System.out.println();
System.out.println("整理为稀疏数组为:");
System.out.println("行"+"\t"+"列"+"\t"+"值");
int[][] sum_array = new int[sum+1][3];
sum_array[0][0] = array.length;
sum_array[0][1] = array[0].length;
sum_array[0][2] = sum;
int sum1 = 1;
for (int i = 0;i<array.length;i++ ) {
for (int j = 0;j<array[i].length;j++) {
if(array[i][j]!=0){
sum_array[sum1][0] = i+1;
sum_array[sum1][1] = j+1;
sum_array[sum1][2] = array[i][j];
++sum1;
}
}
}
for (int[] i :sum_array ) {
for (int j : i ) {
System.out.print(j+"\t");
}
System.out.println();
}
System.out.println("恢复为原数组:");
int[][] y_array = new int[array.length][array[0].length];
for (int i = 1;i<sum_array.length;i++ ) {
for (int j = 0;j<sum_array[0].length;j++ ) {
y_array[sum_array[i][0]-1][sum_array[i][1]-1] = sum_array[i][2];
}
}
for (int[] i : y_array) {
for (int j :i ) {
System.out.print(j+" ");
}
System.out.println();
}
}
public static int[] arrayAdd(int[] i, int j) {
System.out.println("方法运行了");
int[] arrays = new int[i.length + 1];
for (int c = 0; c < i.length; c++) {
arrays[c] = i[c];
}
arrays[arrays.length - 1] = j;
return arrays;
}
}