多数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的区别是什么。没错,这个适合IntegerInteger的映射。

  说到这里,你可能会说,我的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(一)的更多相关文章

  1. Android 开发性能优化之SparseArray(三)

    SparseArray是android里为<Interger,Object>这样的Hashmap而专门写的class,目的是提高效率,其核心是折半查找函数(binarySearch) pr ...

  2. Android 开发性能优化之SparseArray(二)

    一.SparseIntArray API SparseIntArrays map integers to integers.  Unlike a normal array of integers, t ...

  3. Android开发性能优化总结(一)

    安卓开发应用首先要讲究良好的用户体验,如果一款软件卡顿现象严重,不流畅,经常崩溃,那么将给用户带来极不良好的体验,从而损失用户. 在实际开发和学习中,我总结了一下关于安卓性能的优化,供大家参考交流. ...

  4. (转) Android开发性能优化简介

    作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...

  5. [素材资源] Android开发性能优化简介(非常不错的)

    转自(http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost& ...

  6. Android开发性能优化大总结

    1.  采用硬件加速,在androidmanifest.xml中application添加android:hardwareAccelerated="true".不过这个需要在and ...

  7. Android开发性能优化大总结(二)

    接上篇: 1.在JAVA+Oracle 的应用系统开发中,Java中内嵌的sql语句尽量使用大写的形式,以减少Oracle解析器的解析负担: 2.由于JVM的有其自身的GC机制,但是也有遗漏的隐患,建 ...

  8. 转——Android应用开发性能优化完全分析

    [工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.] 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉 ...

  9. Android 应用开发性能优化完全分析

    1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...

随机推荐

  1. ubuntu的syslog为空,停止写入解决方法

    修改syslog权限: chown syslog:adm syslog

  2. 《APUE》第四章笔记(2)

    下面介绍对stat结构的各个成员的操作函数. 先贴个stat结构的图: access函数: #include <unistd.h> int access(const char *pathn ...

  3. QML动态加载组件

    QML中的组件可以重复使用,并且可以通过Loader加载.如下示例: import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Win ...

  4. Linux CPU亲缘性详解

    前言 在淘宝开源自己基于nginx打造的tegine服务器的时候,有这么一项特性引起了笔者的兴趣.“自动根据CPU数目设置进程个数和绑定CPU亲缘性”.当时笔者对CPU亲缘性没有任何概念,当时作者只是 ...

  5. 针对目前高校移动App的火热,哥决定点一把火

    最近正在做市场调研,还请众位大哥大姐们帮忙投个票,求扩散 http://user.qzone.qq.com/717010686/vote/00000000feb6bc2a3ebd1e53

  6. WPF读书笔记 x名称空间详解(第二天)

    每天看一点,每天进步一点. x名称空间映射的是http://schemas.microsoft.com/winfx/2006/xaml,它包含的类均与解析XAML语言关,亦可称为"XAML名 ...

  7. 一步步学习ASP.NET MVC3 (13)——HTML辅助方法

    请注明转载地址:http://www.cnblogs.com/arhat 今天老魏是在十分郁闷,我的一个U盘丢了,心疼里面的资料啊,全部是老魏辛辛苦苦积攒的Linux资料,太心疼,到现在心情还不是很爽 ...

  8. VS2015下的Android开发系列01——开发环境配置及注意事项

    概述 VS自2015把Xamarin集成进去后搞Android开发就爽了,不过这安装VS2015完成的时候却是长了不知道多少.废话少说进正题,VS2015安装时注意把Android相关的组件勾选安装, ...

  9. CAShapeLayer--备用

    之前讲过CALayer动画相关知识,再来看看更加复杂的CAShapeLayer相关的动画知识. 普通CALayer在被初始化时是需要给一个frame值的,这个frame值一般都与给定view的boun ...

  10. ctf总结

    在过去的一个学期中,草人在西普学院还有一些其他安全夺旗网站上刷了一些题,草人我是菜鸟一个,刚开始很是苦恼,所以经历过以后希望将之分享给一起学习安全的同学,目的呢是希望以后学习的人能尽快理清学习思路,进 ...