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