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