SparseArray
SparseArray由兩個數(shù)組mKeys和mValues存放數(shù)據(jù);其中key的類型為int型懈息,這就顯得SparseArray比HashMap更省內存一些乱陡。SparseArray存儲的元素都是按元素的key值從小到大排列好的魄缚。使用二分查找來判斷元素的位置眷茁,數(shù)據(jù)量較小時比HashMap更快枫夺。
ArrayMap
ArrayMap是一個鍵值對映射的數(shù)據(jù)結構鹦马,它設計上更多的是考慮內存的優(yōu)化文判,內部是使用兩個數(shù)組進行數(shù)據(jù)存儲过椎,一個數(shù)組記錄key的hash值,另外一個數(shù)組記錄Value值戏仓,它和SparseArray一樣疚宇,也會對key使用二分法進行從小到大排序,區(qū)別是ArrayMap的key是hash值赏殃。
總結
因為ArrayMap與SparseArray內部都使用了二分法進行從小到大的排序敷待,所以當數(shù)據(jù)量很大的時候,效率至少降低一半仁热,所以谷歌推薦數(shù)據(jù)量在千級以內時使用ArrayMap與SparseArray榜揖,數(shù)據(jù)量非常大時使用HashMap。