SparseArray和ArrayMap代替HashMap

本文对比分析了HashMap、SparseArray及ArrayMap三种数据结构的特点与应用场景。HashMap采用哈希表的拉链结构实现,而SparseArray针对int类型的key优化了存储方式,并使用二分查找提高效率。ArrayMap同样使用二分查找,但在内存使用上更为优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、HashMap

HashMap内部存储结构是使用哈希表的拉链结构(数组+链表)这种存储数据的方法叫做拉链法。

HashMap中默认的存储大小就是一个容量为16的数组,所以当我们创建出一个HashMap对象时,即使里面没有任何元素,也要分别一块内存空间给它,而且,我们再不断的向HashMap里put数据时,当达到一定的容量限制时,HashMap的空间将会扩大,而且扩大后新的空间一定是原来的2倍。

2、SparseArray

避免了对key的自动装箱(int转为Integer类型),它内部则是通过两个数组来进行数据存储的,一个存储key,另外一个存储value,为了优化性能,它内部对数据还采取了压缩的方式来表示稀疏数组的数据,从而节约内存空间。

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

3、ArrayMap

ArrayMap是一个<key,value>映射的数据结构,它设计上更多的是考虑内存的优化,内部是使用两个数组进行数据存储,一个数组记录key的hash值,另外一个数组记录Value值。它和SparseArray一样,也会对key使用二分法进行从小到大排序,在添加、删除、查找数据的时候都是先使用二分查找法得到相应的index,然后通过index来进行添加、查找、删除等操作。

4、使用

1、如果key的类型已经确定为int类型,那么使用SparseArray,因为它避免了自动装箱的过程,如果key为long类型,它还提供了一个LongSparseArray来确保key为long类型时的使用。

2、如果key类型为其它的类型,则使用ArrayMap。


原作者博客地址:http://blog.youkuaiyun.com/u010687392/article/details/47809295
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值