【Android】SparseArray和ArrayMap替换HashMap优化

本文探讨了在Android开发中,如何使用SparseArray和ArrayMap替代HashMap以实现性能优化。HashMap的内存消耗较大,尤其是在大量数据时需要不断扩容。SparseArray适用于key为int类型的情况,通过二分查找提高检索效率;ArrayMap则是一个通用的轻量级Map实现,同样采用二分查找,适用于数据量较小的情况。两者都可以减少内存消耗,提高数据操作速度。
摘要由CSDN通过智能技术生成

在Android开发时,我们使用的大部分都是Java的api,比方HashMap这个api,使用率非常高,可是对于Android这样的对内存非常敏感的移动平台,非常多时候使用一些java的api并不能达到更好的性能,相反反而更消耗内存,所以针对Android这样的移动平台,也推出了更符合自己的api,比方SparseArray、ArrayMap用来取代HashMap在有些情况下能带来更好的性能提升。
介绍它们之前先来介绍一下HashMap的内部存储结构。就明确为什么推荐使用SparseArray和ArrayMap

HashMap
HashMap内部是使用一个默认容量为16的数组来存储数据的,而数组中每个元素却又是一个链表的头结点。所以,更准确的来说,HashMap内部存储结构是使用哈希表的拉链结构(数组+链表),如图:
这样的存储数据的方法叫做拉链法
在这里插入图片描述

且每个结点都是Entry类型

final K key;
V value;
final int hash;
HashMapEntry<K, V> next;

从中我们得知Entry存储的内容有key、value、hash值、和next下一个Entry。那么。这些Entry数据是按什么规则进行存储的呢?就是通过计算元素key的hash值,然后对HashMap中数组长度取余得到该元素存储的位置。计算公式为hash(key)%len

假设hash(14)=14,hash(30)=30,hash(46)=46,我们分别对len取余,得到

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值