SparseArray和SparseArrayCompat是android內(nèi)部特有的api楼眷,功能與HaspMap的功能類(lèi)似叭爱。 SparseArray只能在API19以上的系統(tǒng)里面 才有這個(gè)類(lèi)足丢,也就是Android4.4以上甚纲。于是SparseArrayCompat就是為了兼容更低的版本而存在的崭孤。所以SparseArray和SparseArrayCompat實(shí)際上是一樣的杨拐。
SparseArray(稀疏數(shù)組),在Android內(nèi)部用來(lái)替代HashMap<Integer,E>這種形式,使用SparseArray更加節(jié)省內(nèi)存空間的使用,SparseArray也是以key和value對(duì)數(shù)據(jù)進(jìn)行保存的.使用的時(shí)候只需要指定value的類(lèi)型即可.并且key不需要封裝成對(duì)象類(lèi)型.有得必有失瀑踢,內(nèi)存空間控件減少了扳还,性能上肯定就會(huì)有一點(diǎn)損失才避,不過(guò)在數(shù)據(jù)量少的情況下,基本沒(méi)有影響氨距。 所以一般在數(shù)據(jù)量不大桑逝,最好在千級(jí)以內(nèi),key必須為int類(lèi)型俏让,這中情況下的HashMap能夠用SparseArray取代:
HashMap<Integer, Object> map = new HashMap<>();
用SparseArray取代:
SparseArray<Object> array = new SparseArray<>();
這邊再說(shuō)一個(gè)類(lèi)ArrayMap,其實(shí)和SparseArray差不多楞遏,只是SparseArray限制了key必須為int類(lèi)型,這個(gè)類(lèi)就沒(méi)有這種限制首昔,同樣是android用來(lái)節(jié)省內(nèi)存而存在的寡喝,所以在數(shù)據(jù)量大的情況下,性能同樣有一定的損失勒奇。 所以ArrayMap的應(yīng)用場(chǎng)景: 數(shù)據(jù)量不大预鬓,最好在千級(jí)以內(nèi),數(shù)據(jù)結(jié)構(gòu)類(lèi)型為Map類(lèi)型
ArrayMap<Key, Value> arrayMap = new ArrayMap<>();
【注】:假設(shè)我們要兼容aip19下面版本號(hào)的話赊颠,那么導(dǎo)入的包須要為v4包 import android.support.v4.util.ArrayMap;
轉(zhuǎn)自?https://blog.csdn.net/stonezry/article/details/106208114