安卓优化之SparseArray易懂详解
来源:互联网 发布:怎样查询广电网络账号 编辑:程序博客网 时间:2024/06/17 00:49
SparseArray是对HashMap<Integer, E>
的内存优化。
它怎么优化的呢,为什么说这个呢。因为知道怎么优化的之后,我们就能更好的理解它的方法和使用它。下面我们来说最能看出它优化的遍历。
遍历
//可以看到有从零到Size的index。for (int i = 0; i < sparseArray.size(); i++) { int key = keyAt(i); Object value = valueAt(i); }
可以看到它有点像ArrayList,其实内存优化在于SparseArray是单纯数组的结合.被称为稀疏数组,对数据保存不会有额外的开销。那它的排序也像Arraylist一样按放入的时间排序吗。当然不该是这样了,你别忘了它还有个int值的Key。
SparseArray增删改查
SparseArray有三个元素:index,key,value。index从零到size。key_value键值对按key从小到大顺序排入index里。理解了这个就好看下面的api了。
增和改
它是按key排序的,所以每次赋值(key存在时更改,key不存在时新增)都要找到插入位置,我们来看两种赋值方法,也是让人比较迷的地方:
public void put(int key, E value);public void append(int key, E value)
这种append方式跟put有啥区别呢,append官方是这样说的:
Puts a key/value pair into the array,optimizing for the case where the key is greater than all existing keys in the array.
啥意思呢,其实append就是个优化。因为插入时使用的是二分查找。用append就是如果key比以前所有的key都大(其实只比较最后一个),直接放后面,就不用二分查找了。
删
public void delete(int key) public void remove(int key) //同deletepublic void removeAt(int index) //越界不报错public void clear()
查
public E get(int key) //没有为nullpublic E get(int key, E valueIfKeyNotFound) public int keyAt(int index) //越界为0,这个要注意。所以设key最好不要有0public E valueAt(int index) //越界为nullpublic int indexOfKey(int key) //如果没有返回负数public int indexOfValue(E value) //如果没有返回负数
直接改value
public void setValueAt(int index, E value) //越界不报错
阅读全文
0 0
- 安卓优化之SparseArray易懂详解
- 安卓性能优化—使用ArrayMap与SparseArray
- android性能优化之SparseArray
- Android性能优化之SparseArray
- Android性能优化之SparseArray
- Android 之SparseArray<E>详解
- Android之SparseArray<E>详解
- Android 之SparseArray<E>详解
- Android 之SparseArray<E>详解
- Android性能优化之SparseArray与ArrayMap
- Android应用性能优化之使用SparseArray
- SparseArray详解
- SparseArray详解
- SparseArray详解
- Android编程之SparseArray<E>详解
- Android编程之SparseArray<E>详解 .
- Android编程之SparseArray<E>详解
- Android编程之SparseArray<E>详解
- 原码,反码,补码
- Uml 理解Rational Rose软件中四种视图和Uml 9类图之间的关系
- Dynamics CRM Developer Extensions提升你的开发效率(web resource篇)
- JVM_OPT 线程限制
- shell学习笔记之i f-then -test命令学习
- 安卓优化之SparseArray易懂详解
- html ajax 跨域session
- 自定义button关灯键
- SQL 函数 汇总 简析
- 火爆朋友圈的对对机再添新功能 竟然可以自定义真人语音提醒
- python+selenium自动化测试之路Day4之pycharm的使用详解
- Python3:ImportError: No module named 'compiler.ast'
- CCM ——极致发挥STM32F4性能的利器
- Js获取字符串的显示宽度/高度