HashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果.最近在做一个Android项目,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performance 警告. 意思就是说用SparseArray<E>来替代,以获取更好性能.老实说,对SparseArray并不熟悉,第一感觉应该是Android提供的一个类.按住Ctrl点击进入SparseArray的源码,果不其然,确定是Android提供的一个工具类. 单纯从字面上来理解,SparseArr…
SparseArray是android里为<Interger,Object>这样的Hashmap而专门写的class,目的是提高效率,其核心是折半查找函数(binarySearch) private static int binarySearch(int[] a, int start, int len, int key) { int high = start + len, low = start - 1, guess; while (high - low > 1) { guess = (…
多数Android开发者都知道在Android中可以使用HashMap来映射一种对应关系,在java开发中HashMap也算是一种很重要的数据存储结构.然后很多人在Android开发中多数都会用HashMap来存储这种映射形式的数据. 其实,Android提供了一种更加适合Android开发的数据结构——SparseArray.初看之下,好像是一种数组,其实不然.数组的index是连续的.而SparseArray可以不连续,所以导致SparseArray就具有HashMap的一些特性,但是比Ha…
一.SparseIntArray API SparseIntArrays map integers to integers.  Unlike a normal array of integers, there can be gaps in the indices.  It is intended to be more memory efficient than using a HashMap to map Integers to Integers, both because it avoids…
由于网上有朋友对于这个问题已经有了很详细的研究,所以我就不班门弄斧了: 转载于:http://android-performance.com/android/2014/02/10/android-sparsearray-vs-hashmap.html http://liuzhichao.com/p/832.html http://www.codes51.com/article/detail_163576.html 源码: /* * Copyright (C) 2006 The Android O…
HashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果.最近在做一个Android项目,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performance 警告. 意思就是说用SparseArray<E>来替代,以获取更好性能.老实说,对SparseArray并不熟悉,第一感觉应该是Android提供的一个类.按住Ctrl点击进入SparseArray的源码,果不其然,确定是Android提供的一个工具类. 单纯从字面上来理解,SparseArr…
原文地址:Android学习笔记之性能优化SparseArray 学习内容: 1.Android中SparseArray的使用..   昨天研究完横向二级菜单,发现其中使用了SparseArray去替换HashMap的使用.于是乎自己查了一些相关资料,自己同时对性能进行了一些测试.首先先说一下SparseArray的原理.   SparseArray(稀疏数组).他是Android内部特有的api,标准的jdk是没有这个类的.在Android内部用来替代HashMap<Integer,E>这种…
PS:终于考完试了.来一发.微机原理充满了危机.不过好在数据库89分,还是非常欣慰的. 学习内容: 1.Android中SparseArray的使用..   昨天研究完横向二级菜单,发现其中使用了SparseArray去替换HashMap的使用.于是乎自己查了一些相关资料,自己同时对性能进行了一些测试.首先先说一下SparseArray的原理.   SparseArray(稀疏数组).他是Android内部特有的api,标准的jdk是没有这个类的.在Android内部用来替代HashMap<In…
HashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果.最近在做一个Android项目,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performance 警告. 意思就是说用SparseArray 来替代,以获取更好性能.老实说,对SparseArray并不熟悉,第一感觉应该是Android提供的一个类.按住Ctrl点击进入SparseArray的源码,果不其然,确定是Android提供的一个工具类. 单纯从字面上来理解,SparseArray指…
SparseArray是 Android框架独有的类,在标准的JDK中不存在这个类.它要比 HashMap 节省内存,某些情况下比HashMap性能更好,按照官方问答的解释,主要是因为SparseArray不需要对key和value进行auto- boxing(将原始类型封装为对象类型,比如把int类型封装成Integer类型),结构比HashMap简单(SparseArray内部主要使用 两个一维数组来保存数据,一个用来存key,一个用来存value)不需要额外的额外的数据结构(主要是针对Ha…