之前看到一篇关于adapter的文章用到了SparseArray,所以在这里写写关于SparseArray的使用方法。

SparseArray是官方针对安卓所写的容器,与HashMap类似,只是性能比HashMap好。

SparseArray实现了Cloneable接口,还能够调用clone方法。

首先看看SparseArray的使用方法:

构造:

SparseArray的构造与我们用惯的HashMap,ArrayList一样也是new出一个实例然后使用。

SparseArray<E> sa=new SparseArray<E>();

顺便提一下java1.7支持这样写:

SparseArray<E> sa=new SparseArray<>();

也能够在构造的时候就指定大小:

SparseArray<E> sa=new SparseArray<E>(11);

假设构造的时候不指定大小,则默觉得10

加入元素:

用惯ArraList和HashMap的我们知道要往容器里面加入元素能够分别调用add和put方法。
SparseArray也一样,能够调用put(int key,E value);
相信有读者一经发现上面构造SparseArray的时候已经发现,构造的时候仅仅指定一个泛型,而不像HashMap那样构造的时候要指定两个泛型类型:
new HashMap<String,String>(); 
仅仅须要这样:
SparseArray<E> sa=new SparseArray<E>();

那是由于SparseArray的键仅仅能是int形式所以构造的时候仅仅指定值得泛型就可以。

同一时候也就是说,仅仅能在键为int形式的时候能够使用SparseArray其他情况还是须要使用Map。

除了put方法能够往SparseArray加入元素之外,还能够通过append加入元素。

public void append(int key, E value) 

SparseArray储存数据是使用二分法储存。说储存的数据是依据键的大小,从小到大排列。


取值:

既然能够加入那么自然能够取出来:

public E get(int key) ;

依据键取值。

除此之外另一个方法能够取值:
public E get(int key, E valueIfKeyNotFound) ;

能够看到多了一个參数,从第二个參数的名字能够猜到。当找不到该键的值得时候默认使用第二个參数的值。


除了按键取值之外还能够按顺序取键。按顺序取值:
查看第几个位置的值:
public int keyAt(int index)  
查看第几个位置的键:
public E valueAt(int index)  

假设所查的键或值没有的话会返回负数。

删除:

delete(int  key)

remove(int key)  delete与remove的效果是一样的这里不多说
除此之外还有:
removeAt(int index)
//按顺序删除
clear() 所有清空

改:

public void setValueAt(int index, E value)
public void put(int key, E value)

setValueAt能够将index位置上的值改成value

而put方法前面说过。假设说put进去的键已经存在那么就会覆盖,达到改动的效果。

假设put进去的键还没有的话就添加。




说完主要的增删改查再扯一下其他:

既然官方推荐使用SparseArray,那么在编码过程中遇到键为int形式的则尽量使用SparseArray取代map。



















最新文章

  1. hypermesh 之 interface操作
  2. ASP.NET MVC 6 一些不晓得的写法
  3. join()方法
  4. JVM中启用逃逸分析
  5. NeHe OpenGL教程 第十七课:2D图像文字
  6. spark1.2.0版本SparkSQL使用parquet类型注意事项
  7. Yarn应用程序运行流程剖析
  8. numpy C语言源代码调试(一)
  9. 5.JAVA基础复习——JAVA中的static关键字作用与用法
  10. NRF52832与W25Q80通信
  11. case &#183;&#183;&#183; when &#183;&#183;&#183; then &#183;&#183;&#183;&#183;的使用,同一字段不同内容分组显示
  12. mySQL 增量备份方案
  13. Lint——Android SDK提供的静态代码扫描工具
  14. SQLServer 的数据分页:
  15. 第三方git pull免密码更新
  16. 【翻唱】【你的名字MAD】爱你等于爱自己
  17. 关于new和delete
  18. JS-Object (3) JSON; Event Object相关知识(事件冒泡,事件监听, stopPropagation()
  19. 在Linux下判断系统当前是否开启了超线程
  20. 转mosquitto auth plugin 编译配置

热门文章

  1. Spring.Net学习笔记(0)-错误汇总
  2. myeclipse中部署svn
  3. acedssget F 方式
  4. CAD在一个点构造选择集
  5. [转]Js获取当前日期时间及其它操作
  6. 基础:VS快捷键
  7. MongoDB 启动和关闭
  8. Spring 中无处不在的 Properties
  9. ExtJs如何判断form表单是否被修改过详解
  10. Monkey进行测试时如何屏蔽掉状态栏和音量键