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 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...
随机推荐
- 读书笔记-JavaScript中的全局对象
对于任何JavaScript程序,当程序开始运行时,JavaScript解释器都会初始化一个全局对象以供程序使用.这个JavaScript自身提供的全局对象的功能包括: 1.全局对象拥有一些常用的属性 ...
- javascripct数组
定义数组 数组对象用来在单独的变量名中存储一系列的值. 我们使用关键词 new 来创建数组对象.下面的代码定义了一个名为 myArray 的数组对象: var myArray=new Array() ...
- yii2配置表前缀
前缀设置 component中db的配置修改 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=xxxx', ...
- jquery div拖动效果示例代码
div拖动效果想必大家都有见到过吧,实现的方法也是有很多的,下面为大家将介绍使用jquery是如何实现的,感兴趣的朋友不要错过 复制代码代码如下: <%@ page language=" ...
- 2014年度辛星css教程夏季版第五节
本小节我们讲解css中的”盒模型“,即”box model“,它通常用于在布局的时候使用,这个”盒模型“也有人成为”框模型“,其实原理都一样,它的大致原理是这样的,它把一个HTML元素分为了这么几个部 ...
- 正确配置jstl的maven依赖,jar包冲突的问题终于解决啦
困扰了两天的问题,非常头疼,今天终于有了解决思路了,说到底,还是对maven不够了解吧.总是抱怨maven不好用,出现各种无厘头的问题,原来这些都是归于对它不够了解不够熟悉,它提供了很好的解决思路,只 ...
- 异步IO模型和Overlapped结构
.NET中的 Overlapped 类 异步IO模型和Overlapped结构(http://blog.itpub.net/25897606/viewspace-705867/) 数据结构 OVERL ...
- call()和apply()的区别
var a = function(a,b){ console.log(a+b); }, b = { c:5, d:3 }; a.call(b,1,2); a.apply(b,[1,2]); a.cal ...
- 安卓接入ShareSDK问题
平台图标错乱原因 导出的jar包 包括了 style.class R$attr.class MainActivity.class R$color.class R$drawable.class R$s ...
- Python 标准库 urllib2 的使用细节
刚好用到,这篇文章写得不错,转过来收藏. 转载自 道可道 | Python 标准库 urllib2 的使用细节 Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节 ...