SparseArray,检查密钥是否存在

mag*_*tte 38 java android hashmap sparse-array

我使用a实现了一个Bitmap缓存,HashMap<Integer, Bitmap>并在Eclipse中收到以下警告:

使用新的SparseArray(...)代替更好的性能.

我之前从未听过那个类,但检查它似乎没有一个containsKey()方法,我正在调用从缓存中检索Bitmap来检查它是否存在于缓存中,如果不存在,然后添加它.

有关检查密钥是否已存在的最佳方法的任何想法?

我想我可以更改代码以使用此重载并检查null?

Bitmap bitmap = cache.get(key, null); 
Run Code Online (Sandbox Code Playgroud)

Sam*_*Sam 45

你可以使用:

Bitmap bitmap = cache.get(key, null); 
Run Code Online (Sandbox Code Playgroud)

但要明白这是一样的get(key):

Bitmap bitmap = cache.get(key); 
Run Code Online (Sandbox Code Playgroud)

最好的使用方法get(key, default)是提供一个通用的默认情况,当找不到密钥时,这是一个有效的替代.

但没有充分的理由不用if(get(key) != null)作快速替代品contains().


Ale*_*lex 30

因此在各种情况下你的值都可以为null,我建议使用indexOfKey(int key) 这里是indexOfKey(int key)引用.

然后只需检查负回报值

if(mySparseArray.indexOfKey(int) < 0) {
   //Item does not exist. Do something relevant 
}
Run Code Online (Sandbox Code Playgroud)