- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
@SuppressWarnings("unchecked")
public void addImage(String key, Bitmap bmp){
if(memCache.size() >= MAX_CACHE_SIZE){
Object[] array = (Entry[]) cacheUsage.entrySet().toArray();
Arrays.sort(array, new Comparator<Object>(){
public int compare(Object object1, Object object2) {
return (Integer)(((Map.Entry<String, Integer>)object1).getValue()) -
(Integer)(((Map.Entry<String, Integer>)object2).getValue());
}
});
String keyForRemove = ((Map.Entry<String, Integer>)array[0]).getKey();
memCache.remove(keyForRemove);
cacheUsage.remove(keyForRemove);
}
}
В общем, тут, как всегда, всё зависит от контекста.
если вдруг что-то пропало из кэша, это не страшно - еще раз загрузим. Зато мы будем грузить не каждый раз.
Использование обычной карты в качестве кэша вводит нам в обязанность следить за размером кэша и сумарным размером находящихся там элементов