稀疏数组的功能
优化数据存储结构
稀疏数组与原数组的对应关系
代码实现
public class Main
{
public static void main(String[] args) {
System.out.println("原始数组:");
int arrayBefore[][] = new int[8][8];
arrayBefore[0][0]=1;
arrayBefore[0][7]=2;
arrayBefore[7][0]=3;
arrayBefore[7][7]=4;
for(int row[]:arrayBefore)
{
for(int date:row)
{
System.out.print(date+"\t");
}
System.out.println();
}
System.out.println("原始数组转换为稀疏数组:");
//获取非0值的个数
int count=0;
for(int row[]:arrayBefore)
{
for(int date:row) {
if (date != 0)
{
count++;
}
}
}
System.out.println("非0值有"+count+"个");
//定义稀疏数组
int sparseArr[][]=new int[count+1][3];
//定义第一行
sparseArr[0][0]=8;
sparseArr[0][1]=8;
sparseArr[0][2]=count;
//定义下面4行
int k=0;
for (int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
if(arrayBefore[i][j]!=0)
{
k++;
sparseArr[k][0]=i;
sparseArr[k][1]=j;
sparseArr[k][2]=arrayBefore[i][j];
}
}
}
for (int row[]:sparseArr)
{
for (int date:row)
{
System.out.print(date+"\t");
}
System.out.println();
}
System.out.println("稀疏数组转换为原始数组");
//根据稀疏数组的第一行创建二维数组
int newArr[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
for(int i=1;i<sparseArr.length;i++)
{
newArr[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
}
System.out.println(" //输出转化后的二维数组");
for(int row[]:newArr)
{
for(int date:row)
{
System.out.print(date+"\t");
}
System.out.println();
}
}
}