//创建一个二维数组11*11
//0:表示没有棋子,1:黑子2:白子
int chessArr[][]=new int[11][11];
chessArr[1][2] = 1;
chessArr[2][3] = 2;
//输出
for(int[] row:chessArr){
for (int date: row){
System.out.print(date+"\t");
}
System.out.println();
}
//先遍历二维数组得到非0数
int sum=0;
for (int i = 0; i < chessArr.length; i++) {
for (int j = 0; j < chessArr[i].length; j++) {
if (chessArr[i][j]!=0) {
sum++;
}
}
}
// 创建稀疏数组
int sparseArr[][]=new int[sum+1][3];
sparseArr[0][0] = chessArr.length;
sparseArr[0][1] = chessArr[0].length;
sparseArr[0][2] = sum;
//遍历二维数组,存放有效数据
int count = 0;
for (int i = 0; i < chessArr.length; i++) {
for (int j = 0; j < chessArr[i].length; j++) {
if (chessArr[i][j]!=0) {
count++;
sparseArr[count][0]=i;
sparseArr[count][1]=j;
sparseArr[count][2]=chessArr[i][j];
}
}
}
2.稀疏数组转换为二维数组思路
1.先读取稀疏数组的第一行,创建原始二维数组。
2.读取后面几行数据赋值给二维数组。
//从稀疏数组转为二维数组
int chessArr2[][]=new int[sparseArr[0][0]][sparseArr[0][1]];
for (int i = 1; i < sparseArr.length; i++) {
chessArr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
}