Android 开发性能优化之SparseArray(一)
多数Android开发者都知道在Android中可以使用HashMap
来映射一种对应关系,在java开发中HashMap
也算是一种很重要的数据存储结构。然后很多人在Android开发中多数都会用HashMap
来存储这种映射形式的数据。
其实,Android提供了一种更加适合Android开发的数据结构——SparseArray
。初看之下,好像是一种数组,其实不然。数组的index是连续的。而SparseArray
可以不连续,所以导致SparseArray
就具有HashMap
的一些特性,但是比HashMap
的性能要好。既然性能要好很多,那是不是所有可以用HashMap
的地方都可以用SparseArray
代替呢?也不尽然。SparseArray
的value可以是任意类型,但它的key只能是Integer
类型。
所以如果你的项目中key就是需要Integer
,那么 go ahead,make yourself comfortable.而如果你的需要是key是String
,那你老老实实用HashMap
就好了。
也许你会问:我的key是Integer
、value是Boolean
类型的,也适合SparseArray
吗?当然,不过如果这真是你的情况的话,还有更好的推荐——SparseBooleanArray
,可以说这个类是专门为你这个需求而生的:key是Integer
,value是Boolean
类型。
除此之外,Android还为我们提供了SparseIntArray
,我相信看名字你也能猜出这个与SparseBooleanArray
的区别是什么。没错,这个适合Integer
与Integer
的映射。
说到这里,你可能会说,我的key的值一般比较大,可能Integer
这种数据类型无法表示过来。OK,Android也知道你会这么说,ta-da! LongSparseArray
在这里就等你去使用它。
2013-4-21 0:31 更新:SparseBooleanArray
特别适合的一种场景:ListView
每一项如果有Checkbox
控件的话,你会用什么数据结构保存是否选中这种状态。没错,SparseBooleanArray
非常适合
2013-5-2 2:56 更新:由于SparseArray
属于泛型类,所以使用的时候最好能指定类型参数。就想你使用ArrayList
时候一样:
//从而在编译时就避免cast转换时的类型转换错误
List<String> list = new ArrayList<String>();
本文转载自:http://my.eoe.cn/appadventure/archive/2824.html
Android 开发性能优化之SparseArray(一)的更多相关文章
- Android 开发性能优化之SparseArray(三)
SparseArray是android里为<Interger,Object>这样的Hashmap而专门写的class,目的是提高效率,其核心是折半查找函数(binarySearch) pr ...
- Android 开发性能优化之SparseArray(二)
一.SparseIntArray API SparseIntArrays map integers to integers. Unlike a normal array of integers, t ...
- Android开发性能优化总结(一)
安卓开发应用首先要讲究良好的用户体验,如果一款软件卡顿现象严重,不流畅,经常崩溃,那么将给用户带来极不良好的体验,从而损失用户. 在实际开发和学习中,我总结了一下关于安卓性能的优化,供大家参考交流. ...
- (转) Android开发性能优化简介
作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...
- [素材资源] Android开发性能优化简介(非常不错的)
转自(http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost& ...
- Android开发性能优化大总结
1. 采用硬件加速,在androidmanifest.xml中application添加android:hardwareAccelerated="true".不过这个需要在and ...
- Android开发性能优化大总结(二)
接上篇: 1.在JAVA+Oracle 的应用系统开发中,Java中内嵌的sql语句尽量使用大写的形式,以减少Oracle解析器的解析负担: 2.由于JVM的有其自身的GC机制,但是也有遗漏的隐患,建 ...
- 转——Android应用开发性能优化完全分析
[工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.] 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉 ...
- Android 应用开发性能优化完全分析
1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...
随机推荐
- ubuntu的syslog为空,停止写入解决方法
修改syslog权限: chown syslog:adm syslog
- 《APUE》第四章笔记(2)
下面介绍对stat结构的各个成员的操作函数. 先贴个stat结构的图: access函数: #include <unistd.h> int access(const char *pathn ...
- QML动态加载组件
QML中的组件可以重复使用,并且可以通过Loader加载.如下示例: import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Win ...
- Linux CPU亲缘性详解
前言 在淘宝开源自己基于nginx打造的tegine服务器的时候,有这么一项特性引起了笔者的兴趣.“自动根据CPU数目设置进程个数和绑定CPU亲缘性”.当时笔者对CPU亲缘性没有任何概念,当时作者只是 ...
- 针对目前高校移动App的火热,哥决定点一把火
最近正在做市场调研,还请众位大哥大姐们帮忙投个票,求扩散 http://user.qzone.qq.com/717010686/vote/00000000feb6bc2a3ebd1e53
- WPF读书笔记 x名称空间详解(第二天)
每天看一点,每天进步一点. x名称空间映射的是http://schemas.microsoft.com/winfx/2006/xaml,它包含的类均与解析XAML语言关,亦可称为"XAML名 ...
- 一步步学习ASP.NET MVC3 (13)——HTML辅助方法
请注明转载地址:http://www.cnblogs.com/arhat 今天老魏是在十分郁闷,我的一个U盘丢了,心疼里面的资料啊,全部是老魏辛辛苦苦积攒的Linux资料,太心疼,到现在心情还不是很爽 ...
- VS2015下的Android开发系列01——开发环境配置及注意事项
概述 VS自2015把Xamarin集成进去后搞Android开发就爽了,不过这安装VS2015完成的时候却是长了不知道多少.废话少说进正题,VS2015安装时注意把Android相关的组件勾选安装, ...
- CAShapeLayer--备用
之前讲过CALayer动画相关知识,再来看看更加复杂的CAShapeLayer相关的动画知识. 普通CALayer在被初始化时是需要给一个frame值的,这个frame值一般都与给定view的boun ...
- ctf总结
在过去的一个学期中,草人在西普学院还有一些其他安全夺旗网站上刷了一些题,草人我是菜鸟一个,刚开始很是苦恼,所以经历过以后希望将之分享给一起学习安全的同学,目的呢是希望以后学习的人能尽快理清学习思路,进 ...