Cache.Factory| Constructor and Description |
|---|
LruCache(int size)
Constructor for LruCache.
|
| Modifier and Type | Method and Description |
|---|---|
void |
clear()
清除缓存中所有的内容
|
boolean |
containsKey(K key)
如果这个
key 在缓存中有对应的 value 并且不为 null,则返回 true |
V |
get(K key)
返回这个
key 在缓存中对应的 value, 如果返回 null 说明这个 key 没有对应的 value |
protected int |
getItemSize(V item)
返回每个
item 所占用的 size,默认为1,这个 size 的单位必须和构造函数所传入的 size 一致
子类可以重写这个方法以适应不同的单位,比如说 bytes |
int |
getMaxSize()
返回当前缓存所能允许的最大 size
|
java.util.Set<K> |
keySet()
返回当前缓存中含有的所有
key |
protected void |
onItemEvicted(K key,
V value)
当缓存中有被驱逐的条目时,会回调此方法,默认空实现,子类可以重写这个方法
|
V |
put(K key,
V value)
将
key 和 value 以条目的形式加入缓存,如果这个 key 在缓存中已经有对应的 value
则此 value 被新的 value 替换并返回,如果为 null 说明是一个新条目 |
V |
remove(K key)
移除缓存中这个
key 所对应的条目,并返回所移除条目的 value
如果返回为 null 则有可能时因为这个 key 对应的 value 为 null 或条目不存在 |
void |
setSizeMultiplier(float multiplier)
|
int |
size()
返回当前缓存已占用的总 size
|
protected void |
trimToSize(int size)
当指定的 size 小于当前缓存已占用的总 size 时,会开始清除缓存中最近最少使用的条目
|
public LruCache(int size)
size - 这个缓存的最大 size,这个 size 所使用的单位必须和 getItemSize(Object) 所使用的单位一致.public void setSizeMultiplier(float multiplier)
multiplier - 系数protected int getItemSize(V item)
item 所占用的 size,默认为1,这个 size 的单位必须和构造函数所传入的 size 一致
子类可以重写这个方法以适应不同的单位,比如说 bytesitem - 每个 item 所占用的 sizesizeprotected void onItemEvicted(K key, V value)
key - 被驱逐条目的 keyvalue - 被驱逐条目的 valuepublic int getMaxSize()
getMaxSize in interface Cache<K,V>maxSizepublic boolean containsKey(K key)
key 在缓存中有对应的 value 并且不为 null,则返回 truecontainsKey in interface Cache<K,V>key - 用来映射的 keytrue 为在容器中含有这个 key, 否则为 falsepublic java.util.Set<K> keySet()
keypublic V put(K key, V value)
key 和 value 以条目的形式加入缓存,如果这个 key 在缓存中已经有对应的 value
则此 value 被新的 value 替换并返回,如果为 null 说明是一个新条目
如果 getItemSize(V) 返回的 size 大于或等于缓存所能允许的最大 size, 则不能向缓存中添加此条目
此时会回调 onItemEvicted(Object, Object) 通知此方法当前被驱逐的条目
public V remove(K key)
key 所对应的条目,并返回所移除条目的 value
如果返回为 null 则有可能时因为这个 key 对应的 value 为 null 或条目不存在protected void trimToSize(int size)
size - size