Java编程内功之怎么用稀疏数组
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要讲解了"Java编程内功之怎么用稀疏数组",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java编程内功之怎么用稀疏数组"吧!基本介绍当一个
千家信息网最后更新 2025年11月08日Java编程内功之怎么用稀疏数组
这篇文章主要讲解了"Java编程内功之怎么用稀疏数组",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java编程内功之怎么用稀疏数组"吧!

基本介绍
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组.
稀疏数组的处理方法是:
记录数组一共有几行几列,有多少个不同的值.
把具有不同值的元素的行列记录在一个小规模的数组中,从而缩小程序的规模.
举例说明
原始的二维数组

原始的二维数组
转换后的二维数组
第一行记录原始数组有多少行列,多少值(8<<代表原始数组的值的个数22,15,11,17,-6,39,91,28>>)
转换后的二维数组
二维数组转稀疏数组思路
鸿蒙官方战略合作共建--HarmonyOS技术社区
遍历原始的二维数组,得到有效数据的个数sum
根据sum就可以创建稀疏数组sparseArr int(sum+1)(3)
将二维数组的有效数据存入到稀疏数组
稀疏数组转原始二维数组思路
鸿蒙官方战略合作共建--HarmonyOS技术社区
先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组
再读取稀疏数组后几行的数据,并赋给原始的二维数组即可.
应用实例
鸿蒙官方战略合作共建--HarmonyOS技术社区
使用稀疏数组,来保留类似前面的二维数组(棋盘\地图)等
把稀疏数组存盘,并且可重新恢复原来的二维数组数
代码案例
package com.structures.sparsearray; 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[] ints : chessArr1) { for (int anInt : ints) { System.out.printf("%d\t", anInt); } System.out.println(); } //将二维数组转稀疏数组 //1.先遍历二维数组,得到非0数据的个数. int sum = 0; for (int[] ints : chessArr1) { for (int anInt : ints) { if (anInt != 0) { sum++; } } } System.out.println("sum = " + sum); //2.创建对应的稀疏数组 int[][] sparseArr = new int[sum + 1][3]; //给稀疏数组赋值 sparseArr[0][0] = 11; sparseArr[0][1] = 11; sparseArr[0][2] = sum; //遍历原始数组,将非0的值存放到稀疏数组中 int count = 0;//count用于记录第几个非0数据 for (int i = 0; i < chessArr1.length; i++) { for (int j = 0; j < chessArr1[i].length; j++) { if (chessArr1[i][j] != 0) { count++; sparseArr[count][0] = i; sparseArr[count][1] = j; sparseArr[count][2] = chessArr1[i][j]; } } } //输出稀疏数组 System.out.println(); System.out.println("得到的稀疏数组为~~~~"); for (int[] ints : sparseArr) { for (int anInt : ints) { if (anInt != 0) { System.out.printf("%d\t", anInt); } } System.out.println(); } //将稀疏数组恢复成原始数组 int[][] chessArr2 = new int[sparseArr[0][0]][sparseArr[0][1]]; for (int i = 0; i < sparseArr[0][2]; i++) { chessArr2[sparseArr[i + 1][0]][sparseArr[i + 1][1]] = sparseArr[i + 1][2]; } //恢复后的原始数组 System.out.println("恢复后的原始数组"); for (int[] ints : chessArr2) { for (int anInt : ints) { System.out.printf("%d\t", anInt); } System.out.println(); } } } /* 原始的二维数组 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 sum = 2 得到的稀疏数组为~~~~ 11 11 2 1 2 1 2 3 2 恢复后的原始数组 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 */感谢各位的阅读,以上就是"Java编程内功之怎么用稀疏数组"的内容了,经过本文的学习后,相信大家对Java编程内功之怎么用稀疏数组这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
数组
稀疏
二维
原始
数据
内功
编程
一行
官方
思路
战略
技术
社区
鸿蒙
合作
学习
不同
有效
个数
元素
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
一台云服务器可以多少人使用
嘉兴电子网络技术咨询热线
医院数据库安全审计系统
中学生关于网络安全知识竞赛
云服务器高效处理网站建设
kms 服务器 ip
天玑科技分布式数据库
嘉兴勾欧网络技术有限公司
计算机网络技术发展现状摘要
工信委网络安全和信息化工作
数据库系统概论电子书下载
简述5g网络技术的障碍
贵州省软件开发有限公司
中科院物性及热化学数据库
智慧公寓网络安全
物业软件开发公司吗
网管服务器的网关ip
品掌优汇软件开发
centos6查看nfs服务器
什么叫服务器接口文档
php空间 代理服务器
徐州代驾app软件开发
上海蓝晓网络技术有限公司
绝地求生哪个服务器好
Mysql数据库操作中
增删改查代码及数据库链接
计算机网络管理与软件开发
怎么登陆服务器mc
测试要掌握的数据库知识
在客户服务器模型中 数据储存在