码迷,mamicode.com
首页 > 移动开发 > 详细

Android 性能优化之稀疏数组SparseArray<E>

时间:2015-02-15 06:08:35      阅读:371      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!