android.util包下的几个集合类 SparseArray和ArrayMap等
在Android开发中我们大部分时候都是使用Java语言中的HashMap
来存储数据,但是当开发Android
应用的时候,可能效率并不好,因此Android官方实现了几个适合在Android平台使用的集合类。那么这些Android自己实现的集合类有什么优势呢?下面我们逐一看一下。
ArrayMap
ArrayMap arrayMap = new ArrayMap<>(); arrayMap.put("a","A"); arrayMap.put("b","B"); arrayMap.put("a","A"); arrayMap.put("c","C"); Log.i(TAG, "init: "+arrayMap.toString());
ArrayMap
的使用跟HashMap
是一样的。当数据结构为ArrayMap
替代。
但是相较于HashMap
,ArrayMap
在Android中也不总是高效的。当数据量大了(数百)之后,其性能就会下降至少50%
。所以,当数据量小的时候,使用ArrayMap
效率还是蛮高的,比较是官方专门为Android写的。
SparseArray
在开发中有时我们也会看到Lint
让我们使用其他的如SparseArray
等替换的提示。 这个时候替换的话一般会得到很好的性能优化。
SparseArray
也是用一个ArrayMap
不同的是,这里的Key是Integer.并且省去了自动装箱的操作。提高了存取效率。使用如下
SparseArray sparseArray = new SparseArray<>(); sparseArray.put(1,"A"); sparseArray.put(2,"B"); sparseArray.put(3,"C"); sparseArray.put(2,"D"); Log.i(TAG, "init: "+sparseArray.toString());
其他
SparseIntArray
:当map的结构为Map
的时候使用,效率较高。SparseBooleanArray
: 当map的结构为Map
的时候使用,效率较高。SparseLongArray
: 当map的结构为Map
的时候使用,效率较高。LongSparseArray
: 当map的结构为Map
的时候使用,效率较高。ArraySet
:和ArrayMap
的目的类似,用来提高HashSet
的效率。使用方法跟HashSet
类似
最后说一点,对于android.util
包下的这些容器类,是在API 19
以后才引入的,要想在之前的版本中使用需要引用android.support.v4.util
包下的相应容器类。
更多相关文章
- 第五章 以数据为中心—数据存取(2)
- Android(安卓)SharedPreferences详解
- Android之Content Providers
- android 关系型数据库 SQLiteDatabase的 增 删 改 查
- android创建sqlite数据库及在SD卡上创建数据库(一)
- Android(安卓)弹出菜单示例(Android(安卓)sample API22)
- 联系人结构
- Android——SimpleAdapter的简单使用
- Andorid入门学习笔记整理(一)