上面案列的代码如下
1 package com.wang.array; 2 3 public class SparseArray { 4 public static void main(String[] args) { 5 // 第一步:创建一个11*11二维数组:0:无子, 1:黑子, 2:白子 6 int[][] array = new int[11][11]; 7 array[1][2] = 1; 8 array[2][3] = 2; 9 for (int i = 0; i < array.length; i++) { 10 for (int j = 0; j < array[i].length - 1; j++) { 11 System.out.print(array[i][j] + " "); 12 } 13 System.out.println(); 14 } 15 16 // 第二步:把有效数据取出来,非0的数据 17 int sum = 0; 18 for (int i = 0; i < array.length; i++) { 19 for (int j = 0; j < array[i].length - 1; j++) 20 if (array[i][j] != 0) { 21 sum++; 22 } 23 } 24 25 // 第三步:创建稀疏数组 26 int[][] sparseArray = new int[sum + 1][3]; 27 sparseArray[0][0] = array.length; 28 sparseArray[0][1] = array.length; 29 sparseArray[0][2] = sum; 30 31 // 第四步:给稀疏数组赋值 32 int count = 0; 33 for (int i = 0; i < array.length; i++) { 34 for (int j = 0; j < array[i].length - 1; j++) { 35 if (array[i][j] != 0) { 36 count++; 37 sparseArray[count][0] = i; 38 sparseArray[count][1] = j; 39 sparseArray[count][2] = array[i][j]; 40 } 41 } 42 } 43 44 System.out.println("*****************"); 45 // 打印稀疏数组的内容 46 for (int i = 0; i < sparseArray.length; i++) { 47 for (int i1 = 0; i1 < sparseArray[i].length; i1++) { 48 System.out.print(sparseArray[i][i1] + " "); 49 } 50 System.out.println(); 51 } 52 53 // 由稀疏数组还原为二维数组 54 int[][] array1 = new int[sparseArray[0][0]][sparseArray[0][1]]; 55 for (int i = 1; i < sparseArray.length; i++) { 56 for (int i1 = 0; i1 < sparseArray[i].length; i1++) { 57 array1[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2]; 58 } 59 } 60 61 System.out.println("*****************"); 62 // 打印还原后的二维数组 63 for (int i = 0; i < array1.length; i++) { 64 for (int j = 0; j < array1[i].length - 1; j++) { 65 System.out.print(array1[i][j] + " "); 66 } 67 System.out.println(); 68 } 69 } 70 }
执行后的结果