标签:
SparseArray<E> 就是对数组的压缩,用一种压缩方式来表示数组。
在我们定义数组的时候 ,数组中 有时候会有大部分内容 未被使用(或为0),造成内存控件的浪费。为了节省内存控件,且不影响数组中原有的数据,我们就采用了一种压缩方式来表示数组。
图中黄色显示的是我们使用了的元素,这里其他 元素都被浪费了 。来看看 用 稀疏 数组 表示的 方法
稀疏数组的 第一部分 表示了 数组的行数 、列数、以及元素使用的个数。第二部分 记录了 使用了的 元素在 原数组中的 位置 及 内容 。
SparseArray的使用:
增
public void put(int key, E value) {} public void append(int key, E value){}删
public void delete(int key) {} public void remove(int key) {} //直接调用的delete(int key) public void removeAt(int index){} public void clear(){}改
/** 源码中的处理是 :如果 put 的数据已经存在 ,就是修改 ,否则就是添加 **/ public void put(int key, E value) public void setValueAt(int index, E value)
查
public E get(int key) public E get(int key, E valueIfKeyNotFound) /** 查看第几个位置的键: */ public int keyAt(int index) /** 查看第几个位置的值 */ public E valueAt(int index) /** 查看键所在位置 找不到时返回小于0的数值,而不是返回-1。返回的负值是表示它在找不到时所在的位置。 */ public int indexOfKey(int key) /** 查看值所在位置,没有的话返回-1 */ public int indexOfValue(E value)SparseBooleanArray <---> HashMap<Integer, Boolean>
SparseIntArray <---> HashMap<Integer, Integer>
SparseArray是android里为Hashmap<Interger,Object>这样类的而专门写的,目的是提高效率,其核心是折半查找函数(binarySearch)
HashMap<Integer, E> hashMap = new HashMap<Integer, E>(); <-----> SparseArray<E> sparseArray = new SparseArray<E>();
Android 性能优化之稀疏数组SparseArray<E>
标签:
原文地址:http://www.cnblogs.com/BoBoMEe/p/4292430.html