如何使用 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)
將返回指定鍵的索引,如果沒有鍵對映到指定值,則返回負數。請注意,這是一個線性搜尋,不像按鍵查詢,並且多個鍵可以對映到相同的值,這將只找到其中一個。