SparseLongArray 和 LongSparesArray 的区别

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

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

SparseArray 默认的 value 类型为 Object ,即任意类型。因此根据 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 类型

总结:
SparseLongArray 和 LongSparesArray 从名字上看具有混淆性,但还是有差异。本文从SparseLongArray 和 LongSparesArray 的 key 和 value 的不同,简单说明两者的区别,以方便使用。现简单总结如下:

SparseArray : key为 int, value 任意;
SparseLongArray:key 为 int, value 为 long;
LongSparesArray: key 为 long , value 任意 。
(Long 在前,key 为 long;Long 在后,value 为 long)

因此,当 key 为 int 或者 long 的时候,可以根据情况使用这三种数据结构来替代 HashMap 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值