public class Demo01 {
public static void main(String[] args) {
// 创建一个二维数组11*11
// 0:表示空白 1:表示黑子 2:表示白子
int array[][] = new int[11][11];
array[1][2] = 1;
array[2][3] = 2;
array[5][2] = 2;
// 输出原始数组
for (int[] row:array){
for(int data:row){
System.out.printf("%d\t",data);
}
System.out.println();
}
// 将二维数组转为稀疏数组
// 先遍历得到非零数据个数
int sum = 0;
for (int[] row:array){
for(int data:row){
if (data!=0){
sum++;
}
}
}
// 创建对应的稀疏数组
int arr[][] = new int[sum+1][3];
// 给稀疏数组赋值
arr[0][0] = 11;
arr[0][1] = 11;
arr[0][2] = sum;
// 给其他值赋给稀疏数组
int flag = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j]!=0){
++flag;
arr[flag][0] = i;
arr[flag][1] = j;
arr[flag][2] = array[i][j];
}
}
}
System.out.println("------------------------------------------------------------------------");
// 输出稀疏数组
for (int[] row:arr){
for(int xishu:row){
System.out.printf("%d\t",xishu);
}
System.out.println();
}
System.out.println("------------------------------------------------------------------------");
int newArray[][] = new int[arr[0][0]][arr[0][1]];
for (int k = 1; k <arr.length; k++) {
newArray[arr[k][0]][arr[k][1]] = arr[k][2];
}
// 输出从稀疏数组转出来的新二维数组
for (int[] row:newArray){
for(int data:row){
System.out.printf("%d\t",data);
}
System.out.println();
}
}
}