如何使用 SparseArray

优势:

  • 内存使用量减少(因为原始密钥)。
  • 没有自动拳击。

坏处 :

  • SparseArray 使用二进制搜索查找值(O(log n)),因此如果必须使用大量元素(使用 HashMap),它可能不是最佳解决方案。

该族有以下几种变体:-SparseArray <Integer,Object> -SparseBooleanArray <Integer,Boolean> -SparseIntArray <Integer,Integer> -SparseLongArray <Integer,Long> -LongSparseArray <Long,Object> -LongSparseLongArray <Long,Long >

SparseArray 操作

  • 添加元素 - put(int, x):添加从指定键到指定值的映射,如果有指定键,则替换先前映射。 - append(int, x):将键/值对放入数组中,针对键大于数组中所有现有键的情况进行优化。你应该在顺序键的情况下使用 append() 来优化性能。否则 put() 很好。

  • 删除元素 - 删除(int):从指定的键中删除映射(如果有)。 - removeAt(int):删除给定索引处的映射。 - removeAtRange(int, int):删除一系列映射作为批处理。

  • access element - get(int):获取从指定键映射的 int,如果没有这样的映射,则返回 0。 - get(int, E):获取从指定键映射的 int,如果没有进行这样的映射,则获取指定的值。 - valueAt(int):给定范围为 0 … size() - 1 的索引,返回此 SparseIntArray 存储的 indexth 键值映射中的值。指数按升序排列。

  • index / key search - keyAt(int):给定范围为 0 … size() - 1 的索引,返回此 SparseIntArray 存储的 indexth 键值映射中的键。指数按升序排列。 - valueAt(int):给定范围为 0 … size() - 1 的索引,返回此 SparseIntArray 存储的 indexth 键值映射中的值。指数按升序排列。 - indexOfKey(int):返回 keyAt(int) 将返回指定键的索引,如果未映射指定键,则返回负数。 - indexOfValue(E):返回 valueAt(int) 将返回指定键的索引,如果没有键映射到指定值,则返回负数。请注意,这是一个线性搜索,不像按键查找,并且多个键可以映射到相同的值,这将只找到其中​​一个。