二维数组与稀疏数组的相互转化
public class Demo {
public static void main(String[] args) {
//初始化二维数组
int count=0;
int index=0;
int [][] arr =new int[11][11];
arr[1][10]=1;
arr[2][3]=2;
arr[3][3]=1;
arr[10][6]=2;
for (int[] ints : arr) {
for (int anInt : ints) {
if(anInt!=0){
count++;
}
System.out.printf("%d\t",anInt);
}
System.out.println();
}
System.err.println("===================================");
int [][] xishu=new int[count+1][3];
//将二位数组转化为稀疏数组
xishu[index][0]=11;
xishu[index][1]=11;
xishu[index][2]=count;
for (int i = 0; i < arr.length; i++) {
int[] ints = arr[i];
for (int i1 = 0; i1 < ints.length; i1++) {
if(ints[i1]!=0){
++index;
xishu[index][0]=i ;
xishu[index][1]=i1;
xishu[index][2]=ints[i1];
}
}
}
for (int[] ints : xishu) {
for (int anInt : ints) {
if(anInt!=0){
count++;
}
System.out.printf("%d\t",anInt);
}
System.out.println();
}
System.err.println("=======================================");
//将稀疏数组转化为二位数组
int [][] newArr =new int[xishu[0][0]][xishu[0][1]];
for (int i = 1; i < xishu.length; i++) {
int[] ints = xishu[i];
int iinxdex=0;
for (int i1 = 0; i1 < ints.length; i1++) {
newArr[ints[iinxdex]][ints[++iinxdex]]=ints[++iinxdex];
iinxdex=0;
}
}
for (int[] ints : newArr) {
for (int anInt : ints) {
if(anInt!=0){
count++;
}
System.out.printf("%d\t",anInt);
}
System.out.println();
}
}
}