系列文章地址:
Android容器类-ArraySet原理解析(一)
Android容器类-ArrayMap原理解析(二)
Android容器类-SparseArray原理解析(三)
Android容器类-SparseIntArray原理解析(四)
SparseArray
和其他的Android容器类一样,都是为了更加有效地利用内存,说直白点,就是为了节省内存。SparseArray
和ArrayMap
一样,都是为了更高效的保存int值到非原始类型的映射,用了同样的数据结构,但是为了提高效率,SparseArray
也做了自己的优化。接下来就分析一下SparseArray
的存储,添加和删除元素。
继承结构
上图表明,SparseArray
并没有像ArrayMap
一样实现Map
接口,仅仅实现了Cloneable
接口。
存储结构
存储结构和ArraySet
以及ArrayMap
一脉相承,都使用int数组存储key值,使用Object数组存储对象。不同点在于mKeys
数组中存储的是添加元素的key值本身,没有进行hash值得计算。
put
public void put(i