Package org.eclipse.handly.util
Class LruCache<K,V>
- java.lang.Object
-
- org.eclipse.handly.util.LruCache<K,V>
-
- Direct Known Subclasses:
BoundedLruCache
public class LruCache<K,V> extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
LruCache.Entry<K,V>
An LRU cache entry.
-
Constructor Summary
Constructors Constructor Description LruCache()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
add(LruCache.Entry<K,V> entry)
Adds a new entry to this cache in response toput(Object, Object)
.void
clear()
Removes all entries from this cache.protected void
doAdd(LruCache.Entry<K,V> entry)
Actually adds a new entry to this cache.protected void
doRemove(LruCache.Entry<K,V> entry)
Actually removes an existing entry from this cache.protected LruCache.Entry<K,V>
entryByKey(java.lang.Object key)
Returns the corresponding entry for the given key, ornull
if this cache contains no entry for the key.V
get(java.lang.Object key)
Returns the corresponding value for the given key and moves the corresponding entry to the most recently used position in this cache.protected LruCache.Entry<K,V>
getLruEntry()
Returns the least recently used cache entry, ornull
if this cache is empty.protected LruCache.Entry<K,V>
getMruEntry()
Returns the most recently used cache entry, ornull
if this cache is empty.boolean
isEmpty()
Returns whether this cache is empty.protected void
moveToMru(LruCache.Entry<K,V> entry)
Moves an existing cache entry to the MRU position.protected LruCache.Entry<K,V>
newEntry(K key, V value)
Creates a new cache entry with the given key and value.V
peek(java.lang.Object key)
Returns the corresponding value for the given key without disturbing cache ordering, ornull
if this cache contains no value for the key.V
put(K key, V value)
Caches the given value for the given key and moves the corresponding entry to the most recently used position in this cache.V
remove(java.lang.Object key)
Removes the cache entry for the given key if it is present.protected void
remove(LruCache.Entry<K,V> entry)
Removes an existing entry from this cache in response toremove(Object)
.int
size()
Returns the size of this cache.java.util.Map<K,V>
snapshot()
Returns a snapshot of the current contents of this cache, ordered from most recently accessed to least recently accessed.java.lang.String
toString()
protected void
update(LruCache.Entry<K,V> entry, V value)
Updates an existing cache entry to change its value and moves it to the MRU position in response toput(Object, Object)
.
-
-
-
Method Detail
-
size
public final int size()
Returns the size of this cache.- Returns:
- the size of the cache
-
isEmpty
public final boolean isEmpty()
Returns whether this cache is empty.- Returns:
true
if the cache is empty, andfalse
otherwise
-
get
public final V get(java.lang.Object key)
Returns the corresponding value for the given key and moves the corresponding entry to the most recently used position in this cache. If the cache contains no value for the key,null
is returned.- Parameters:
key
- the key whose corresponding value is to be returned- Returns:
- the corresponding value for the given key, or
null
if the cache contains no value for the key
-
peek
public final V peek(java.lang.Object key)
Returns the corresponding value for the given key without disturbing cache ordering, ornull
if this cache contains no value for the key.- Parameters:
key
- the key whose corresponding value is to be returned- Returns:
- the corresponding value for the given key, or
null
if the cache contains no value for the key
-
put
public final V put(K key, V value)
Caches the given value for the given key and moves the corresponding entry to the most recently used position in this cache. Returns the previous value of the updated cache entry, ornull
if the cache contained no value for the key.- Parameters:
key
- the key for which the given value is to be cached (notnull
)value
- the value to be cached for the given key (notnull
)- Returns:
- the previous value of the updated cache entry, or
null
if the cache contained no value for the key
-
remove
public final V remove(java.lang.Object key)
Removes the cache entry for the given key if it is present. Returns the value of the removed cache entry, ornull
if this cache contained no value for the key.- Parameters:
key
- the key whose entry is to be removed from the cache- Returns:
- the value of the removed cache entry, or
null
if the cache contained no value for the key
-
clear
public void clear()
Removes all entries from this cache.
-
snapshot
public final java.util.Map<K,V> snapshot()
Returns a snapshot of the current contents of this cache, ordered from most recently accessed to least recently accessed.- Returns:
- a snapshot of the current contents of the cache
(never
null
)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
getMruEntry
protected final LruCache.Entry<K,V> getMruEntry()
Returns the most recently used cache entry, ornull
if this cache is empty.- Returns:
- the MRU entry, or
null
if the cache is empty
-
getLruEntry
protected final LruCache.Entry<K,V> getLruEntry()
Returns the least recently used cache entry, ornull
if this cache is empty.- Returns:
- the LRU entry, or
null
if the cache is empty
-
entryByKey
protected final LruCache.Entry<K,V> entryByKey(java.lang.Object key)
Returns the corresponding entry for the given key, ornull
if this cache contains no entry for the key.- Parameters:
key
- the key whose corresponding entry is to be returned- Returns:
- the corresponding entry for the given key, or
null
if the cache contains no entry for the key
-
newEntry
protected LruCache.Entry<K,V> newEntry(K key, V value)
Creates a new cache entry with the given key and value.- Parameters:
key
- the key of the new entry (nevernull
)value
- the value of the new entry (nevernull
)- Returns:
- the created entry (not
null
)
-
add
protected void add(LruCache.Entry<K,V> entry)
Adds a new entry to this cache in response toput(Object, Object)
.This implementation invokes
doAdd(Entry)
.- Parameters:
entry
- the entry to add (nevernull
)
-
update
protected void update(LruCache.Entry<K,V> entry, V value)
Updates an existing cache entry to change its value and moves it to the MRU position in response toput(Object, Object)
.This implementation changes the entry value and then invokes
moveToMru(Entry)
.- Parameters:
entry
- the entry to update (nevernull
)value
- a new value for the entry (nevernull
)
-
remove
protected void remove(LruCache.Entry<K,V> entry)
Removes an existing entry from this cache in response toremove(Object)
.This implementation invokes
doRemove(Entry)
.- Parameters:
entry
- the entry to remove (nevernull
)
-
doAdd
protected void doAdd(LruCache.Entry<K,V> entry)
Actually adds a new entry to this cache.- Parameters:
entry
- the entry to add (nevernull
)
-
doRemove
protected void doRemove(LruCache.Entry<K,V> entry)
Actually removes an existing entry from this cache.- Parameters:
entry
- the entry to remove (nevernull
)
-
moveToMru
protected void moveToMru(LruCache.Entry<K,V> entry)
Moves an existing cache entry to the MRU position.- Parameters:
entry
- the entry to move (nevernull
)
-
-