zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    CentOS 7 配置hadoop(二) 配置hdfs(伪分布)
    CentOS 7 配置hadoop(一) 安装虚拟机(伪分布)
    linux配置
    hive配置
    引用的layui框架在网页上时间显示object
    Spring常用的基本注解
    5W1H分析法
    项目在网页中字符编码问题
    eclipse项目上如何传到码云上!
    spring+springmvc+mybatis+Redis的配置文件
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/3559751.html
Copyright © 2011-2022 走看看