稀疏数组和二维数组转换(以及持久化io实现)

文章介绍了一个使用Java实现的稀疏数组转换过程,包括从原始二维数组创建稀疏数组,然后将稀疏数组恢复为二维数组,并展示了如何将稀疏数组保存到文件以及从文件中读取还原的过程。这种方法适用于大部分元素为0或相同值的大规模数组,以节省存储空间。

稀疏数组:

1、 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存数组。

2、 稀疏数组的处理方式是:

  a)      记录数组一共有几行几列,有多少个不同值

  b)      把具有不同值元素的行、列及值记录在一个小规模的数组中,从而缩小程序的规模

3、 如下图

  [0][0]代表原数组有6行,[0][1]代表原数组有6列,[0][2]代表有2个不同值

  [1][0]代表原数组第1行,[1][1]代表原数组第2列,[1][2]代表值为1

  [2][0]代表原数组第2行,[2][1]代表原数组第1列,[2][2]代表值为2

 

 代码实现:


public class SparseArray {
	
	public static void main(String[] args) {
		// 创建一个原始的二维数组11 * 11
		// 0: 表示没有棋子 , 1表示 黑子 , 2 表示白子
		int chessArr1[][] = new int[11][11]; // 棋盘
		chessArr1[1][2] = 1;
		chessArr1[2][3] = 2;
		// 输出原始的二维数组
		System.out.println("原始的二维数组");
		for(int[] row : chessArr1) {
			for(int data: row) {
				System.out.printf("%d\t",data
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓风残月Lx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值