1 public class SparseArray { 2 3 //二维数组转换稀疏数组 4 public static void TwoArrayToSparseArray(){ 5 //定义原始二维数组 转换 6 int[][] originalArray=new int[11][11]; 7 //模拟给二维数组存数据 8 originalArray[3][4]=1; 9 originalArray[6][7]=2; 10 //遍历二维数组 得到不同的值的个数 用于创建稀疏数组 11 int count=0;//记录不同值的个数 12 for (int[] ints : originalArray) { 13 for (int item : ints) { 14 if(item!=0){ 15 count++; 16 } 17 } 18 } 19 20 //创建稀疏数组, 稀疏数组格式为 N+1行 和固定3 列 21 //第一列存原始数组的行 第二列存原始数组的列 第三列存原始数组值不同的个数 22 //稀疏数组第一行就用于存放 原始数组的行和列 和不同值的个数 23 //剩下的N行取决于不同值的个数 每一行存放 不同值的行 列 和不同的值 24 int[][] sparseArray=new int[count+1][3]; 25 26 //给稀疏数组第一行赋值 原始数组的行 列和不同值的个数 27 sparseArray[0][0]=originalArray.length; 28 sparseArray[0][1]=originalArray[0].length; 29 sparseArray[0][2]=count; 30 31 //稀疏数组保存数据需要索引一行一行递增 因为第1行已经添加 所以从二行开始 32 int index=1; 33 34 //遍历原始数组 存放数据 35 for (int i = 0; i < originalArray.length; i++) { 36 for (int j = 0; j < originalArray.length; j++) { 37 if(originalArray[i][j]!=0){ 38 //找到不同值 给稀疏数组赋值 第一列是原始数组行 第二列是原始数组列 39 //第三列是原始数组中不同的值 然后索引自增 40 sparseArray[index][0]=i; 41 sparseArray[index][1]=j; 42 sparseArray[index][2]=originalArray[i][j]; 43 index++; 44 } 45 } 46 } 47 48 System.out.println("打印从二维数组转换完毕的稀疏数组"); 49 //打印稀疏数组 50 for (int i = 0; i < sparseArray.length; i++) { 51 System.out.println(sparseArray[i][0]+"\t"+sparseArray[i][1]+"\t"+sparseArray[i][2]+"\t"); 52 } 53 } 54 55 //稀疏数组转换二维数组 56 public static void SparseArrayToTwoArray(){ 57 //创建稀疏数组 58 int[][] sparseArray=new int[3][3]; 59 //模拟数据 60 sparseArray[0][0]=11; 61 sparseArray[0][1]=11; 62 sparseArray[0][2]=2; 63 sparseArray[1][0]=3; 64 sparseArray[1][1]=4; 65 sparseArray[1][2]=1; 66 sparseArray[2][0]=6; 67 sparseArray[2][1]=7; 68 sparseArray[2][2]=2; 69 70 //创建二维数组 71 //先得到二维数组的行和列 72 int row=sparseArray[0][0]; 73 int column=sparseArray[0][1]; 74 int[][] originalArray=new int[row][column]; 75 76 //遍历稀疏数组给二维数组赋值 因为稀疏数组第一列存的是二维数组的行列 不同值个数 遍历从1开始 77 for (int i = 1; i <= sparseArray.length-1; i++) { 78 //每一行数据的第一列为 行 第二列为列 第三列为值 根据行,列,值给二维数组赋值 79 row=sparseArray[i][0]; 80 column=sparseArray[i][1]; 81 originalArray[row][column]=sparseArray[i][2]; 82 } 83 84 //打印二维数组 85 System.out.println("打印从稀疏数组转换完成的二维数组"); 86 for (int[] ints : originalArray) { 87 for (int item : ints) { 88 System.out.print(item+"\t"); 89 } 90 System.out.println(); 91 } 92 } 93 94 95 96 public static void main(String[] args) { 97 98 //二维数组转换稀疏数组 99 TwoArrayToSparseArray(); 100 101 //稀疏数组转换二维数组 102 SparseArrayToTwoArray(); 103 } 104 105 106 107 }
原文:https://www.cnblogs.com/java888/p/11666708.html