1.二维数组<-->稀疏数组
将一个如下棋盘的数据存储在二维数组中,将二维数组转换成稀疏数组,再从稀疏数组中读取数据,转换成二维数组。

代码实现:
1 /* 2 实现二维数组->稀疏数组 3 稀疏数组->二维数组 4 */ 5 public class SparseArray { 6 public static void main(String[] args) { 7 //1.初始化二维数组 8 int[][] arr1=new int[11][11]; 9 arr1[1][2]=1; 10 arr1[2][3]=2; 11 //遍历输出二维数组 12 System.out.println("遍历二维数组:"); 13 for (int[] row:arr1 14 ) { 15 for (int data:row 16 ) { 17 System.out.printf("%d\t",data); 18 } 19 System.out.println(); 20 } 21 //遍历二维数组,获取非0数据的个数 22 int sum=0; 23 for (int[] row:arr1 24 ) { 25 for (int data:row 26 ) { 27 if(data!=0) 28 sum++; 29 } 30 } 31 System.out.println("二维数组中的非0值的个数:"+sum);//2 32 //2.将二维数组->稀疏数组 33 //新定义一个sum+1行,3列的稀疏数组 34 int[][] sparseArr=new int[sum+1][3]; 35 //将二维数组中的数据存储到稀疏数组中 36 //初始化稀疏数组 37 sparseArr[0][0]=11; 38 sparseArr[0][1]=11; 39 sparseArr[0][2]=sum; 40 //将数据存储到稀疏数组中 41 int count=0; 42 for (int j = 0; j < 11; j++) { 43 for (int k = 0; k < 11; k++) { 44 if(arr1[j][k]!=0) { 45 count++; 46 sparseArr[count][0] = j; 47 sparseArr[count][1] = k; 48 sparseArr[count][2] = arr1[j][k]; 49 } 50 } 51 } 52 53 //遍历稀疏数组 54 System.out.println("稀疏数组:"); 55 for (int[] row:sparseArr 56 ) { 57 for (int data:row 58 ) { 59 System.out.printf("%d\t",data); 60 } 61 System.out.println(); 62 } 63 64 //3.将稀疏数组->二维数组 65 //先读取第一行用于初始化二维数组 66 int[][] arr2=new int[sparseArr[0][0]][sparseArr[0][1]]; 67 for (int i = 1; i < sparseArr.length; i++) { 68 arr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2]; 69 } 70 //遍历输出二维数组 71 System.out.println("新生成的二维数组:"); 72 for (int[] row:arr2 73 ) { 74 for (int data:row 75 ) { 76 System.out.printf("%d\t",data); 77 } 78 System.out.println(); 79 } 80 81 } 82 }
打印结果:
|
遍历二维数组: |

浙公网安备 33010602011771号