Android开发之SparseArray简介

来源:互联网 发布:程序员算法 编辑:程序博客网 时间:2024/05/17 07:16

1、定义: SparseArray,即稀疏数组,这个对象和HashMap类似,也是一个容器,但是它的key是整数类型。

 2、特点:SparseArray不需要对key和value进行auto- boxing(将原始类型封装为对象类型,比如把int类型封装成Integer类型),结构比HashMap简单(SparseArray内部主要使用 两个一维数组来保存数据,一个用来存key,一个用来存value)不需要额外的额外的数据结构(主要是针对HashMap中的HashMapEntry 而言的)。

3、优点:

(1)使用SparseArray存储数据时,需要的内存空间比HashMap要小,可以测试同时存储1w条数据SparseArray和HashMap需要申请的空间。

(2)存储数据时速度更快,但是使用SparseArray倒序存储时,速度要比正序存储要慢上10倍左右,但是和HashMap相比仍然要快一点。逆序存储变慢的原因是:SparseArray存储数据时采用了二分查找算法进行存储,在存储数据的时候需要对key进行从小到大的顺序进行排序。采用HashMap存储数据慢的原因:HashMap采用的是哈希查算法对数据进行存储,哈西存储算法是通过hashCode(关键码)来确定节点的存储位置的。而SparseArray是通过数组的方式存储数据的,很明显HashMap存储的方式慢很多。

(3)在查找方面:SparseArray使用的是二分查找算法,而HashMap使用的哈希查找算法,一般的情况下SparseArray的查找效率高些。

(4)在删除方面:SparseArray删除数据的时候也做了优化,使用了延迟整理数组的方法,和HashMap相比,性能差不多。

  总之,在Android系统里面,内存是非常金贵的,所以使用SparseArray来存储数据是一种更好的选择。

0 0
原创粉丝点击