SparseArray原理和使用

SparseArray是什么

我们有时候使用HashMap存放数据时,会存入<Integer,Object> 这类的键值对:

而在早前编译器会推荐使用SparseArray替代HashMap进行这类键值对的存取。(现在不知道为什么没有提示了)所以其实SparseArray和HashMap大同小异,都是存放键值对的数据结构,只不过SparseArray只用来存放key为简单类型int型的键值对。

为什么要用SparseArray?

SparseArray的注解(百度翻译):

SparseArray将整数映射到对象,与普通的对象数组不同,它的索引可以包含间隙。SparseArray旨在比HashMap更节省内存,因为它避免了自动装箱键,并且其数据结构不依赖于每个映射的额外entry对象

注意,这个容器将其映射保存在数组数据结构中,使用二进制搜索来查找键。该实现不适用于可能包含大量项的数据结构。它通常比HashMap慢,因为查找需要二进制搜索,添加和删除需要在数组中插入和删除条目。对于容纳数百件物品的容器,性能差异小于50%。

为了提高性能,容器在删除键时包含了一个优化:它不会立即压缩数组,而是将删除的条目标记为已删除。然后,该条目可以重新用于同一个键,或者稍后在所有删除的条目的单个垃圾收集中进行压缩。每当阵列需要增长时,或者当检索映射大小

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值