稀疏数组
public static void main(String[] args) {
// TODO 自动生成的方法存根
//创建一个二维数组 10行 * 10列
//0.没有棋子 1.黑棋 2.白棋
//从0 开始数这个表0-10 稀 疏 数 组 表
/* 0 0 0 0 0 0 0 0 0 0 行 列 值
0 0 1 0 0 0 0 0 0 0 [0] 10 10 2
0 0 0 2 0 0 0 0 0 0 [1] 1 2 1
0 0 0 0 0 0 0 0 0 0 [2] 2 3 2
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
*/
int[][] array1 = new int[10][10];
array1 [1][2] = 1;
array1 [2][3] = 2;
//输出原始的数组
System.out.println("输出原始的数组");
/*
for (声明语句: 表达式){
代码
}
*/
for(int[] ints : array1)
{
for(int anInt : ints)
{
System.out.print(anInt + " ");
}
System.out.println();
}
System.out.println("=================");
//将上述的转换为稀疏数组保存
//先获取数组的有效个数有多少
int sum = 0;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (array1[i][j] != 0)
{
sum++;
}
}
}
System.out.println("获取数组的有效个数有" + sum);//2
//重新创建一个稀疏数组的数组(sum + 1是要加头部信息)
int[][] array2 = new int[sum + 1][3];
array2[0][0] = 10;
array2[0][1] = 10;
array2[0][2] = sum;
//遍历二维数组,将非零的值,存放在稀疏数组值中
int count = 0;
for (int i = 0; i < array1.length; i++)
{
for (int j = 0; j < array1.length; j++)
{
if (array1[i][j] != 0)
{
count++;
array2[count][0] = i; //行
array2[count][1] = j; //列
array2[count][2] = array1[i][j]; //值
}
}
}
for (int i = 0; i < array2.length; i++)
{
System.out.println(array2[i][0] + "\t "
+ array2[i][1] + "\t "
+ array2[i][2] + "\t ");
}
System.out.println("还原");
//1.读取稀疏数组,行 列
int[][] array3 = new int [array2[0][0]][array2[0][1]];
//2.给其中的元素还原它的值(头部信息不用执行)
for (int i = 1; i < array2.length; i++)
{
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
//3.打印
System.out.println("输出还原数组");
for(int[] ints : array3)
{
for(int anInt : ints)
{
System.out.print(anInt + " ");
}
System.out.println();
}
}
}
/*
执行后的结果:
输出原始的数组
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
=================
获取数组的有效个数有2
10 10 2
1 2 1
2 3 2
还原
输出还原数组
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
*/