SparseArray
SparseArray由两个数组mKeys和mValues存放数据;其中key的类型为int型,这就显得SparseArray比HashMap更省内存一些。SparseArray存储的元素都是按元素的key值从小到大排列好的。使用二分查找来判断元素的位置,数据量较小时比HashMap更快。
ArrayMap
ArrayMap是一个键值对映射的数据结构,它设计上更多的是考虑内存的优化,内部是使用两个数组进行数据存储,一个数组记录key的hash值,另外一个数组记录Value值,它和SparseArray一样,也会对key使用二分法进行从小到大排序,区别是ArrayMap的key是hash值。
总结
因为ArrayMap与SparseArray内部都使用了二分法进行从小到大的排序,所以当数据量很大的时候,效率至少降低一半,所以谷歌推荐数据量在千级以内时使用ArrayMap与SparseArray,数据量非常大时使用HashMap。