Android开发之SparseArray简介
2015-06-14 21:23
387 查看
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来存储数据是一种更好的选择。
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来存储数据是一种更好的选择。
相关文章推荐
- Android学习6.1下拉列表一
- 浅析Android触摸事件分发原理
- Android进阶(十二)Fragment VS Activity
- Android进阶(十二)Fragment VS Activity
- android性能测试与调优:使用 DDMS 查看内存分配情况
- Android:ViewGroup事件分发机制
- 自定义Android的Dialog
- Android中的Service 与 Thread 的区别?
- Android 系统稳定性 - Watchdog
- Android 性能优化(一)
- Android 系统稳定性 - OOM
- Android 系统稳定性 - ANR
- android实现gif图与文字混排
- 图解Android - ActivityManagerService
- 图解Android - WatchDog
- Android - AudioService(Java)
- Android官方提供的支持不同屏幕大小的全部方法
- Android最佳实践之响应灵敏性
- Android 反编译资料整理
- Android 设计思想