news 2026/8/7 22:10:42

SparseArray、ArrayMap

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SparseArray、ArrayMap

SparseArray与ArrayMap都是Android提供的两个列表数据结构,它们采用的是以时间换空间的方式来提高效率,即增加时间投入、减少内存占用。

SparseArray

SparseArray稀疏数组,它采用压缩的方法存储稀疏数组中的内容。SparseArray是android里为<Interger,Object>这样的整型Key-对象Value的HashMap而专门写的类,目的是节省内存,其核心是折半查找函数(binarySearch)。

SparseArray内部通过两个数组进行数据存储,一个存储key,另外一个存储 value,为了优化性能,它内部对数据还采取了压缩的方式来表示稀疏数组的数据,从而节约内存空间。

SparseArray只能存储key为int类型的数据,同时,SparseArray在存储和读取数据时 候,使用的是二分查找法,

SparseArray存储的元素都是按元素的key值从小到大排列好的。获取数据的时候,也是使用二分查找法判断元素的位置,所以获取数据的时候非常快。

但是SparseArray在数据量大的情况下性能将降低至少50%。满足下面两个条件我们可以使用SparseArray代替 HashMap:

  • 数据量不大,最好在千级以内
  • key必须为int类型

ArrayMap

ArrayMap的内部实现是两个数组,一个int数组是存储对象数据对应下标,一个对象数组保存key和value,内部使用二分法对key进行排序和查找,只适合于小数据量操作,在数据量比较大的情况下它的性能将退化。

Bundle内部是由ArrayMap实现的,因为使用Bundle的场景大多数为小数据量, 在两个Activity之间传递数据的场景下使用 ArrayMap保存数据,在操作速度和内存占用上都具有优势,因此使用Bundle来传递数据,可以保证更快的速度和更少的内存占用。

而HashMap内部则是数组+链表结构,在数据量较少的时候, HashMap的Entry Array比ArrayMap占用更多的内存。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 22:06:58

快速上手fastBPE:从安装到应用的完整教程

快速上手fastBPE&#xff1a;从安装到应用的完整教程 【免费下载链接】fastBPE Fast BPE 项目地址: https://gitcode.com/gh_mirrors/fa/fastBPE fastBPE是一款高效的C实现的子词单元算法工具&#xff0c;基于论文《Neural Machine Translation of Rare Words with Subw…

作者头像 李华
网站建设 2026/8/7 22:06:33

揭秘平昌县建设局网站背后的故事:如何为每一位居民打造透明透明的政务服务门户

在这个信息爆炸的时代,我们似乎每天都奔波在各种各样的数字平台之间。从外卖软件到社交网络,从银行APP到办事大厅的电子屏,我们的生活被代码和数据重新定义。然而,在这些光鲜亮丽的数字界面背后,真正决定一座城市温度与效率的,往往是那些最基础、最贴近百姓生活的政务服务…

作者头像 李华
网站建设 2026/8/7 22:04:32

Postmanerator自动化文档生成:集成Travis CI与GitHub Pages

Postmanerator自动化文档生成&#xff1a;集成Travis CI与GitHub Pages 【免费下载链接】postmanerator A HTTP API documentation generator that use Postman collections 项目地址: https://gitcode.com/gh_mirrors/po/postmanerator Postmanerator是一款强大的HTTP …

作者头像 李华
网站建设 2026/8/7 22:02:11

3步搭建你的私人麻将AI教练:Akagi雀魂辅助工具完全指南

3步搭建你的私人麻将AI教练&#xff1a;Akagi雀魂辅助工具完全指南 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將&#xff0c;能夠使用自定義的AI模型實時分析對局並給出建議&#xff0c;內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amat…

作者头像 李华
网站建设 2026/8/7 22:01:04

SAE未来路线图:缓存激活与KL散度评估即将上线

SAE未来路线图&#xff1a;缓存激活与KL散度评估即将上线 【免费下载链接】sae Sparsify transformers with SAEs and transcoders 项目地址: https://gitcode.com/gh_mirrors/sae/sae SAE&#xff08;Sparse Autoencoders&#xff09;作为稀疏化Transformer模型的关键技…

作者头像 李华