Java编程内功之怎么用稀疏数组
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"Java编程内功之怎么用稀疏数组",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java编程内功之怎么用稀疏数组"吧!基本介绍当一个
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
小米移动互联网科技园
伟宏互联网科技
云之行互联网科技
奇酷互联网科技
九亚互联网科技
米客互联网科技
深圳期待互联网科技
一五八零互联网科技
互联网金融监管科技
互联网公司会议桌创意科技软装饰
深圳国际航运科技和互联网
互联网教育科技公司vipkid
昭通云南众福互联网科技有限公司
搜狐科技互联网
长沙互联网科技
江苏互联网科技小贷
万物互联网智能科技
互联网科技的前景
东风日产互联网科技公司叫什么
中国主要互联网科技公司
哈尔滨大商圈互联网科技有限公司
今日互联网科技
腾讯阿里互联网科技
互联网 的科技创新
无线互联网科技
互联网科技创新企业排名
互联网系的金融科技公司
互联网科技项目计划书材料类
浙南科技城互联网大厦建设工程
乌鲁木齐新华智原互联网科技学校