SparseArray 是Android 特有的api,標(biāo)準(zhǔn)jdk里面沒有這個(gè)類朴乖,在Android內(nèi)部用來替代HashMap這種形式沃粗;SparseArray更加節(jié)省內(nèi)存的使用茫因,SparseArray也是以key和value對(duì)數(shù)據(jù)進(jìn)行保存的.使用的時(shí)候只需要指定value的類型即可.并且key不需要封裝成對(duì)象類型.
HashMap是數(shù)組和鏈表的結(jié)合體,被稱為鏈表散列.
SparseArray是單純數(shù)組的結(jié)合.被稱為稀疏數(shù)組,對(duì)數(shù)據(jù)保存的時(shí)候,不會(huì)有額外的開銷.結(jié)構(gòu)如下:
SparseArray每次的插入方式都需要調(diào)用二分查找.因此這樣在倒序插入的時(shí)候會(huì)導(dǎo)致情況非常的糟糕,效率上絕對(duì)輸給了HashMap
數(shù)據(jù)量100000條時(shí)SparseArray要比HashMap要節(jié)約27%的內(nèi)存.也就是以犧牲效率的代價(jià)去節(jié)約內(nèi)存空間.我們知道Android對(duì)內(nèi)存的使用是極為苛刻的.堆區(qū)允許使用的最大內(nèi)存僅僅16M.很容易出現(xiàn)OOM現(xiàn)象的發(fā)生.因此在Android中內(nèi)存的使用是非常的重要的