SparseLongArray和LongSparesArray

SparseArray:key为 int,value 为Object;
SparseIntArray:key 为 int,value 为int;
SparseBooleanArray:key 为 int,value 为 boolean;
SparseLongArray:key 为 int,value 为 long;
LongSparesArray:key 为 long ,value 为Object 。

==>Long 在前,key 为 long;Long 在后,value 为 long

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

关于访问性能:
SparseArray相比于HashMap,SparseArray虽然将key和value分成两个数组存储,但是KV对的index是对应相同的,通过二分法查到到key的index之后,可以直接在value数组中找到值。且value数组直接存储的就是目标值,而HashMap中找到的entries对象只是引用,还要再访问一次内存才可以找到value值,相对于CPU缓存(JVM中寄存器)而言,访问内存的成本还是比较高的。这也是SparseArray性能比较高的原因(当然,限于数据量较小时)。
参考https://blog.csdn.net/moter/article/details/80279809

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容