Android使用SparseArray取代HashMap

开发中,HashMap使用非常频繁,而HashMap是Java官方API,针对Android移动平台,性能并不合适,所以Google针对Android平台,推出了功能相同,更节省内存的SparseArray,

  that may contain large numbers of items.  It is generally slower than a traditional
  HashMap, since lookups require a binary search and adds and removes require inserting
  and deleting entries in the array.  For containers holding up to hundreds of items,
  the performance difference is not significant, less than 50%.</p>```

API提出,通常情况下,在处理大量数据时,SparseArray速度比HashMap要慢,因为查找需要二进制搜索,并添加和删除需要插入和删除数组中的条目,但是性能最多不会低于50%,从字面理解,使用SparseArray牺牲了效率,为什么效率比HashMap低,反而官方推荐使用呢?因为可以节省内存,内存的消耗相对于效率,更为重要,所以在综合之下,推荐使用SparseArray

----- 

####使用
######克隆

SparseArray<E> clone() //复制```

添加
 void put(int key, E value) 
append(int key, E value)  //内部也是调用put方法
删除
void delete(int key)
void remove(int key)  
void removeAt(int index)
void clear()  //清除全部

//remove方法内部实际调用delete方法,
public void remove(int key) {
        delete(key);
 }

根据指定键删除,并且返回值

E removeReturnOld(int key)```
从某个键开始,删除指定个数

void removeAtRange(int index, int size)```

查找
E get(int key)
E get(int key, E valueIfKeyNotFound) //第二参数即key取不到值时的默认值```

查看第几个位置的键:

int keyAt(int index)```
查看第几个位置的值:

E valueAt(int index)```
查看某个键所在位置

int indexOfKey(int key)```
查看某个值所在位置

 int indexOfValue(E value```
######修改

void setValueAt(int index, E value)
void put(int key, E value) //put不仅添加还可以修改键值对,注意:如果键不存在,就会变为添加新键值对```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,274评论 25 708
  • 注意:SparseArray 对应的是HashMap ,如果是HashMap 等则无法代替;SparseArray...
    Ten_Minutes阅读 1,675评论 2 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,194评论 18 399
  • 越南语中,她的名字意思是“和平的景致”,我的名字意思是“平和的内心”。这两个几乎可以互换的名字,让我母亲更加确信,...
    wujiejing阅读 840评论 0 0
  • 女儿一放暑假,我们就去了南京,我带了一本书《断舍离》,在南京呆了4、5天,把这本书看完了,跃跃欲试,就等回家。 回...
    薇薇安的30天阅读 553评论 1 2

友情链接更多精彩内容