SparseArray和ArrayMap替代HashMap

简介: 用android 自己的api SparseArray和ArrayMap在有些情况下能带来更好的性能提升。SparseArraySparseArray 只能存储key为int类型的数据,同时,SparseArray在存储和读取的时候,使用的是二分查找法。

用android 自己的api SparseArray和ArrayMap在有些情况下能带来更好的性能提升。

SparseArray

SparseArray 只能存储key为int类型的数据,同时,SparseArray在存储和读取的时候,使用的是二分查找法。

  • 添加数据
public void put (int key, E value)
  • 删除数据
public void remove(int key)

SparseArray 使用场景

  1. 数据量不大,最好在千级以内
  2. key必须为int类型,这种情况的HashMap可以用SparseArray代替:
HashMap<Integer, Object> map = new HashMap<>();
SparseArray<Object> array = new SparseArray<>();

ArrayMap

ArrayMap是一个<key, value>映射的数据结构。

ArrayMap 和 HashMap 对比

// 遍历 ArrayMap
for (int i=0; i<arrayMap.size(); i++) {
    String key = (String) arrayMap.keyAt(i);
    String val = (String) arrayMap.valueAt(i);
    System.out.println(key + "--" + val);
}

// 遍历 SparseArray
for (int i=0; i<arrayMap.size(); i++) {
    String val = (String) sparseArray.get(i);
    System.out.println(val);
}
目录
相关文章
|
3月前
|
存储 安全 Java
HashMap的详细解读
HashMap的详细解读
30 0
|
1月前
|
机器学习/深度学习
HashMap中tableSizeFor()方法详解
HashMap中tableSizeFor()方法详解
HashMap中tableSizeFor()方法详解
|
10月前
|
存储 算法
详解HashMap
1.hash code hash code是使用hash函数运算得到的一个值,是对象的身份证号码,用于对象的辨重。在同一运行周期,对同一个对象多次调用hashcode(),只要是用于equals()的内容未变,那么每次得到的hash码也应该不变。,但不同运行周期间hash码可能会不同。
83 0
|
存储 算法 安全
【HashMap】
【HashMap】
100 0
|
存储 缓存 Java
|
存储 Java
Map接口和其之类HashMap、LinkedHashMap
Map接口和其之类HashMap、LinkedHashMap
|
安全 算法 数据挖掘
厉害了!把 HashMap 剖析的只剩渣了!
很高兴遇见你~ HashMap是一个非常重要的集合,日常使用也非常的频繁,同时也是面试重点。本文并不打算讲解基础的使用api,而是深入HashM
厉害了!把 HashMap 剖析的只剩渣了!
|
存储
HashMap 中的一个“坑”!(2)
HashMap 中的一个“坑”!(2)
184 0
HashMap 中的一个“坑”!(2)
HashMap 中的一个“坑”!(3)
HashMap 中的一个“坑”!(3)
180 0
HashMap 中的一个“坑”!(3)
HashMap 详解五
红黑树性质 红黑树是平衡二叉树的一种, 但是它的平衡因子是可以大于 1 红黑树的节点要么是红色, 要么是黑色, 这里的红黑色只是用来区分的一种方式, 为了定义规则 根节点一定是黑色 叶子节点也是黑色, 实际上叶子节点都是由 NULL 组成 红色节点的子节点是黑色 根节点到叶子节点的路径都.
1056 0