Android 开发性能优化之SparseArray(三)

  SparseArray是android里为<Interger,Object>这样的Hashmap而专门写的class,目的是提高效率,其核心是折半查找函数(binarySearch

    private static int binarySearch(int[] a, int start, int len, int key) {
        int high = start + len, low = start - 1, guess;
        while (high - low > 1) {
            guess = (high + low) / 2;
            if (a[guess] < key)
                low = guess;
            else
                high = guess;
        }
        if (high == start + len)
            return ~(start + len);
        else if (a[high] == key)
            return high;
        else
            return ~high;
    }

所以,它存储的数值都是按键值从小到大的顺序排列好的。

包含的方法,

添加数据

public void put(int key, E value) {}
public void append(int key, E value){}

删除操作:

public void delete(int key) {}
public void remove(int key) {} 
public void removeAt(int index){}
public void clear(){}

修改数据:

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)

相应的也有SparseBooleanArray,用来取代HashMap<Integer, Boolean>,SparseIntArray用来取代HashMap<Integer, Integer>,大家有兴趣的可以研究。

SparseArray是android里为<Interger,Object>这样的Hashmap而专门写的类,目的是提高效率,其核心是折半查找函数(binarySearch)。在Android中,当我们需要定义时,我们可以使用如下的方式来取得更好的性能。

HashMap<Integer, E> hashMap = new HashMap<Integer, E>();
SparseArray<E> sparseArray = new SparseArray<E>();

 

 

 

本文转载自:http://blog.csdn.net/xiangzilv1987/article/details/8209903

posted @ 2014-02-21 16:48  似水流云  阅读(245)  评论(0编辑  收藏  举报