SparseLongArray 和 LongSparesArray 的区别

本文介绍了Android中SparseArray的设计目的及其与HashMap的区别,并详细解释了SparseArray、SparseLongArray和LongSparesArray的特性与应用场景。

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

SparseArray 是 Android 平台特有的,引入 SparseArray 的目的是替代 HashMap 从而节省内存空间,其用法与 HashMap很类似。由 SparseArray 又可以派生出 SparseLongArray 和 LongSparesArray。要说 SparseLongArray 和 LongSparesArray 的区别,先来说一下 SparseArray。 
这里写图片描述 
从源码可以看到,SparseArray 的内部是通过两个数组对数据进行存储的, key 为 int 类型数组, 而 value 为 Object 类型数组。SparseArray 比 HashMap 更省内存、在某些条件下性能更好的主要原因是它避免了对 key 的自动装箱(int 转为 Integer 类型)。关于 SparseArray 的更多细节(如添加删除使用二分查找)就不展开了。

因此,SparseArray 的 key 必须为 int 类型。

SparseArray 默认的 value 可以为任意类型,因此根据 value 类型不同,又可以细分派生出 SparseIntArray(key 为 int, value 为int)、SparseBooleanArray(key 为 int, value 为 boolean)、SparseLongArray(key 为 int, value 为 long) 等,使用方法与 SparseArray 大同小异。其中,SparseLongArray 如下: 
这里写图片描述 
前面说了, SparseArray 的 key 必须为 int 类型,而对于“特殊的 int 类型” — long , 也有相应的类来处理,这就是LongSparesArray: 
这里写图片描述 
可以看到,LongSparesArray 的 key 为 long 类型。

总结: 
SparseArray :key为 int, value 任意。 
SparseLongArray:key 为 int, value 为 long。 
LongSparesArray: key 为 long , value 任意

因此,当 key 为 int 或者 long 的时候,可以使用这三种来替代 HashMap 了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值