android.util包下的几个集合类 SparseArray和ArrayMap等

本文介绍Android平台中几种高效集合类的使用方法与场景,包括ArrayMap、SparseArray、SparseIntArray、SparseBooleanArray、SparseLongArray及LongSparseArray等。这些集合类针对Android进行了优化,适用于特定的数据类型和场景。
摘要由CSDN通过智能技术生成

在Android开发中我们大部分时候都是使用Java语言中的HashMap来存储数据,但是当开发Android应用的时候,可能效率并不好,因此Android官方实现了几个适合在Android平台使用的集合类。那么这些Android自己实现的集合类有什么优势呢?下面我们逐一看一下。

ArrayMap

        ArrayMap<String ,String> 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是一样的。当数据结构为<key,value>的时候,都可以使用ArrayMap替代。
但是相较于HashMapArrayMap在Android中也不总是高效的。当数据量大了(数百)之后,其性能就会下降至少50%。所以,当数据量小的时候,使用ArrayMap效率还是蛮高的,比较是官方专门为Android写的。

SparseArray

在开发中有时我们也会看到Lint让我们使用其他的如SparseArray等替换的提示。 这个时候替换的话一般会得到很好的性能优化。

clipboard.png

SparseArray也是用一个<Key,Value>对,但是跟ArrayMap不同的是,这里的Key是Integer.并且省去了自动装箱的操作。提高了存取效率。使用如下

        SparseArray<String> 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<Integer,Integer>的时候使用,效率较高。

  • SparseBooleanArray: 当map的结构为Map<Integer,Boolean>的时候使用,效率较高。

  • SparseLongArray: 当map的结构为Map<Integer,Long>的时候使用,效率较高。

  • LongSparseArray: 当map的结构为Map<Long,Value>的时候使用,效率较高。

  • ArraySet:和ArrayMap的目的类似,用来提高HashSet的效率。使用方法跟HashSet类似

最后说一点,对于android.util包下的这些容器类,是在API 19以后才引入的,要想在之前的版本中使用需要引用android.support.v4.util包下的相应容器类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值