稀疏数组可以实现将二维数组的数据进行压缩。
二维数组
00000000000
00100000000
00020000000
00000000000
00000000000
00000000000
00000000000
00000000000
00000000000
00000000000
00000000000
稀疏数组
11 11 2 第一个是二维数组多少行,第二个是列,第三个是不同的值的个数
1 2 1 值的行,列和值的大小
2 3 2
public class SparseArray {
public static void main(String[] args){
//棋子
int[][] chessArray = new int[11][11];
chessArray[1][2] = 1;
chessArray[2][3] = 2;
//得到不为0的总数
int sum = 0;
for (int[] array:chessArray){
for (int item :array){
if (item != 0){
sum++;
}
}
}
//把数据存到稀疏数组中去
int[][] sparseArray = new int[sum+1][3];
sparseArray[0][0] = chessArray.length;
sparseArray[0][1] = chessArray[0].length;
sparseArray[0][2] = sum;
//其他行赋值
int count = 0;
for (int i = 0; i < chessArray.length; i++) {
for (int j = 0; j < chessArray[i].length; j++) {
if (chessArray[i][j] != 0){
count++;
sparseArray[count][0] = i;
sparseArray[count][1] = j;
sparseArray[count][2] = chessArray[i][j];
}
}
}
//取出数据到二维数组
int[][] arrays = new int[sparseArray[0][0]][sparseArray[0][1]];
for (int i = 1; i < sparseArray.length; i++) {
arrays[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
}
}
}