課程
/移動開發
/Android
/APP性能優化之內存優化
何時使用ArrayMap、SparseArray代替HashMap?
2017-03-08
源自:APP性能優化之內存優化
正在回答
hashMap默認容量16,裝載因子0.75,超過裝載因子容量自動翻倍,這個過程要重組數組結構,比較費時和費內存。所以如果動態加載大量數據時要注意。但查找數據正常時快于以下兩個,因為hash是直接定位,而下面兩個是二分法查找。
所以,如果是裝載靜態字典,繼續用HashMap。
滿足下面兩個條件我們可以使用SparseArray代替HashMap:
數據量不大,最好在千級以內
key必須為int類型,這中情況下的HashMap可以用SparseArray代替:
SparseArray和ArrayMap都差不多,使用哪個呢??
假設數據量都在千級以內的情況下:
1、如果key的類型已經確定為int類型,那么使用SparseArray,因為它避免了自動裝箱的過程,如果key為long類型,它還提供了一個LongSparseArray來確保key為long類型時的使用
2、如果key類型為其它的類型,則使用ArrayMap
詳見:
http://blog.csdn.net/u010687392/article/details/47809295
舉報
內存優化的原理,實戰并有代碼演示
1 回答請問:我們在項目的時候是可以多使用軟引用嗎?
1 回答最近最少使用算法
1 回答ppt 和代碼有下載地址嗎
1 回答誰有這個課程的代碼嗎?求分享
2 回答原來的activity是復用的啊,怎么會內存泄露
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-03-08
hashMap默認容量16,裝載因子0.75,超過裝載因子容量自動翻倍,這個過程要重組數組結構,比較費時和費內存。所以如果動態加載大量數據時要注意。但查找數據正常時快于以下兩個,因為hash是直接定位,而下面兩個是二分法查找。
所以,如果是裝載靜態字典,繼續用HashMap。
滿足下面兩個條件我們可以使用SparseArray代替HashMap:
數據量不大,最好在千級以內
key必須為int類型,這中情況下的HashMap可以用SparseArray代替:
SparseArray和ArrayMap都差不多,使用哪個呢??
假設數據量都在千級以內的情況下:
1、如果key的類型已經確定為int類型,那么使用SparseArray,因為它避免了自動裝箱的過程,如果key為long類型,它還提供了一個LongSparseArray來確保key為long類型時的使用
2、如果key類型為其它的類型,則使用ArrayMap
詳見:
http://blog.csdn.net/u010687392/article/details/47809295