SparseArray和ArrayMap代替HashMap

1、HashMap

HashMap內部存儲結構是使用哈希表的拉鍊結構(數組+鏈表)這種存儲數據的方法叫做拉鍊法。

HashMap中默認的存儲大小就是一個容量爲16的數組,所以當我們創建出一個HashMap對象時,即使裏面沒有任何元素,也要分別一塊內存空間給它,而且,我們再不斷的向HashMap裏put數據時,當達到一定的容量限制時,HashMap的空間將會擴大,而且擴大後新的空間一定是原來的2倍。

2、SparseArray

避免了對key的自動裝箱(int轉爲Integer類型),它內部則是通過兩個數組來進行數據存儲的,一個存儲key,另外一個存儲value,爲了優化性能,它內部對數據還採取了壓縮的方式來表示稀疏數組的數據,從而節約內存空間。

SparseArray只能存儲key爲int類型的數據,同時SparseArray在存儲和讀取數據時候,使用的是二分查找法

3、ArrayMap

ArrayMap是一個<key,value>映射的數據結構,它設計上更多的是考慮內存的優化,內部是使用兩個數組進行數據存儲,一個數組記錄key的hash值,另外一個數組記錄Value值。它和SparseArray一樣,也會對key使用二分法進行從小到大排序,在添加、刪除、查找數據的時候都是先使用二分查找法得到相應的index,然後通過index來進行添加、查找、刪除等操作。

4、使用

1、如果key的類型已經確定爲int類型,那麼使用SparseArray,因爲它避免了自動裝箱的過程,如果key爲long類型,它還提供了一個LongSparseArray來確保key爲long類型時的使用。

2、如果key類型爲其它的類型,則使用ArrayMap。


原作者博客地址:http://blog.csdn.net/u010687392/article/details/47809295
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章