SparseArray
关键点:
- 二分法 - ContainerHelpers.binarySearch
- 位非运算符(~)
- 插入新的数据,如果没有增加数组大小 GrowingArrayUtils.insert
- 插入新的数据,如果没有增加数组大小 GrowingArrayUtils.append
- 用到 remove delete 才会 mGarbage = true
- SparseArray 定义GC 方法 value置空 数据移动重排
优点:
1.规定了 key 基础类型 类型 避免了装箱 拆箱
2.存放 **百十个以内** 数据 二分法查询 效率搞
3.优化了删除数据操作
(触发前置条件 mGarbage == true 才会在调用x 方法时 进行切断引用 )
4. 相比较 hashmap 不需要保存key所对应的哈希值减少内存。
5. 频繁 添加或者删除操作 性能影响相比较较小 。
缺点:
1.数据越大 扩容的耗时越多。
2.排除多线程
3.删除(GC)并不会导致数组长度减小