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

你可能感兴趣的:(SparseLongArray和LongSparesArray)