package com.baidu.method; public class Array4 { public static void main(String[] args) { //1创建一个二维数组11*11 int[][]array1=new int[11][11]; array1[1][2]=1; array1[2][3]=2; for (int[] ints : array1) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } System.out.println("=================================================================="); //2转换为稀疏数组 //获取有效值 int sum=0; for (int i = 0; i < 11; i++) { for (int j = 0; j <11 ; j++) { if (array1[i][j]!=0){ sum++; } } } System.out.println("有效值为:"+sum); //3创建一个稀疏数组 int[][]array2=new int[sum+1][3];//稀疏数组为有效值个数加一个,总共三列 array2[0][0]=11;//第一行第一列表示原数组为11行 array2[0][1]=11;//第一行第二列表示原数组为11列 array2[0][2]=sum;//第一行第三列表示原数组有效值个数 //遍历原数组,将有效值存入稀疏数组 int count=0; for (int i = 0; i <array1.length ; i++) { for (int j = 0; j <array1[i].length ; j++) { if (array1[i][j]!=0){ count++; array2[count][0]=i; array2[count][1]=j; array2[count][2]=array1[i][j]; } } } System.out.println("稀疏数组为:"); for (int[] ints : array2) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } System.out.println("======================================================"); System.out.println("还原:"); int[][] array3=new int[array2[0][0]][array2[0][1]]; for (int i = 1; i <array2.length ; i++) { array3[array2[i][0]][array2[i][1]]=array2[i][2]; } System.out.println("数组还原为:"); for (int[] ints : array3) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } } } 运行结果: