如何使用 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)
将返回指定键的索引,如果没有键映射到指定值,则返回负数。请注意,这是一个线性搜索,不像按键查找,并且多个键可以映射到相同的值,这将只找到其中一个。