OpenHarmony 军棋开发带你了解如何选择数据结构 原创 精华
陈浩南xxx
发布于 2022-12-13 13:50
浏览
5收藏
OpenHarmony 军棋开发带你了解如何选择数据结构
一,引言
数据结构不只是用于组织数据,它还极大地影响着代码的运行速度。因为数据结构不同,程序的运行速度可能相差多个数量级。如果你写的程序要处理大量的数据,或者要让数千人同时使用,那么你采用何种数据结构,将决定它是能够运行,还是会因为不堪重负而崩溃。
很多应用的基本不考虑数据结构;也涉及不到选择的场景,遇到复杂的,也是不断的遍历得出结果;即耗时又耗内存;
二,需求分析
大体要求
1,记录整个棋的状态
2 ,快速查到任意棋的状态
3,棋子的定位问题
4,移动时如何记录路径
5,初始化随机布局
三,数据结构选择
HashMap
可用来存储具有关联关系的 key-value 键值对集合,存储元素中 key 是唯一的,每个 key 会对应一个 value 值。
HashMap
依据泛型定义,集合中通过 key 的 hash 值确定其存储位置,从而快速找到键值对。
1,通过HashMap的特性,很好的处理问题1和 2
我们给每个棋一个编号key来代替实体been,这样每次获取某个棋的状态只要直接通过key取就好了
初始化的时候把所有棋存入map中。这样整个棋盘状态就存储了;比数组和list更方便
二维数组
整个棋盘的行列来保存期的位置;存放他们的key,阵容的棋子去掉该key即可
js的二维数组初始化方法
链式数据结构
每次 把prev给记录下来。这下就可以追溯到整个完整的探测路线
ArrayList
它有个特点,是有序的排列,我们利用这个可以随机布局之后定位
开始时,把map里的所有数据存入list中,这个时候他是位置不是随机的
利用随机数交换里面的任意位置,同时保证每个位置都得到交换
军旗开始很多碉堡是不能有棋的;也利用list特性,在指定位置插入空白
二维素组是可以用一维组表示的
三,总结
本文通过实际场景来体现一下数据结构如何运用和选择;
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-12-20 10:07:49修改
赞
5
收藏 5
回复
5
4
5
相关推荐
时间复杂度,空间复杂度是衡量代码的重要指标
学习优化存储的思路
很高效的存储思路,不过军旗这个体量的游戏应该不用考虑这么多吧
由简单的游戏引入这种思维;