packagecom.tm.dataStu;
publicclassDataArr{
publicstaticvoidmain(String[]args){
//创建的原始的2维数组
//0表示没有棋子1表示黑子2表示蓝子
intcherArr[][]=newint[11][11];
cherArr[1][2]=1;
cherArr[2][3]=2;
for(inti=0;i<cherArr.length;i++){
for(inti1=0;i1<cherArr[i].length;i1++){
System.out.printf("%d\t",cherArr[i][i1]);
}
System.out.println();
}
//将二维数组转成稀疏数组的思路
//1.先遍历二维数组得到个非0的数组
intsum=0;//判断有几个非0的数
for(inti=0;i<cherArr.length;i++){
for(intj=0;j<cherArr[i].length;j++){
if(cherArr[i][j]!=0){
sum++;
}}
}
//2创建对应的稀疏数组
intsparseArr[][]=newint[sum+1][3];
//给稀疏数组赋值
sparseArr[0][0]=11;
sparseArr[0][1]=11;
sparseArr[0][2]=sum;
//遍历二维数组把非0的值存放到稀疏数组中(sparseArr)
intcount=0;//count用来计算是第几个非0数字
for(inti=0;i<11;i++){
for(intj=0;j<11;j++){//sparseArr[[1,2,1][2,3,2]]
if(cherArr[i][j]!=0){
count++;//12
sparseArr[count][0]=i;//sparseArr[1][1]sparseArr[2][2]
sparseArr[count][1]=j;//sparseArr[1][2]sparseArr[2][3]
sparseArr[count][2]=cherArr[i][j];//sparseArr[1][1]sparseArr[2][2]
}}
}
for(inti=0;i<sparseArr.length;i++){
for(intj=0;j<sparseArr[i].length;j++){
System.out.printf("%d\t\n",sparseArr[i][j]);
}
}
//将稀疏数组----->恢复为二维数组
//1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组
intchessArr[][]=newint[sparseArr[0][0]][sparseArr[0][1]];
//2在读取稀疏数组后几行的数据(从第二行开始),并赋值给原始的二维数组即可
for(inti=1;i<sparseArr.length;i++){
chessArr[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
}
//恢复后的二维数组
for(inti=0;i<chessArr.length;i++){
for(inti1=0;i1<chessArr[i].length;i1++){
System.out.printf("%d\t",chessArr[i][i1]);
}
System.out.println();
}
}
}