除了我们常用JDK提供的容器以外,Android还提供的自己的容器类,如SparseArray就是其中比较常见的一个类。
特点
- SparseArray是一个整形到对象的映射;
在整形到对象的映射这方面,它比HashMap在内存上更有效率;
因为它避免了自动装箱的key,它的数据结构不依赖一个额外的Entry对象
它把映射关系存储在两个数组中,用二分查找算法查找元素;
这种实现不宜用在含有大量数据项的数据结构中,当数据量为1K以下的时候,性能差异不是那么明显,保持在50%以下。
对于已知的性能问题,这个容器进行了优化:在remove的时候并不立即执行变更,而是将元素标记为删除,让在适合的时机进行重用,或者在gc(容器内的gc方法)的时候进行全部移除。这个gc操作,会在容器容量增加的时候执行。
只看这些特点也没啥用,顺便分析一下源码,加深下印象吧:
private int[] mKeys;
private Object[] mValues;
private int mSize;
看一下这三个重要的属性,用于存储key值的整形数组,用于存