|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.jcs.utils.struct.LRUMap<K,V>
public class LRUMap<K,V>
This is a simple LRUMap. It implements most of the map methods. It is not recommended that you use any but put, get, remove, and clear.
Children can implement the processRemovedLRU method if they want to handle the removal of the lest recently used item.
This class was abstracted out of the LRU Memory cache. Put, remove, and get should be thread safe. It uses a hashtable and our own double linked list.
Locking is done on the instance.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface java.util.Map |
|---|
Map.Entry<K,V> |
| Field Summary | |
|---|---|
protected Map<K,LRUElementDescriptor<K,V>> |
map
Map where items are stored by key. |
| Constructor Summary | |
|---|---|
LRUMap()
This creates an unbounded version. |
|
LRUMap(int maxObjects)
This sets the size limit. |
|
| Method Summary | |
|---|---|
void |
clear()
This removes all the items. |
boolean |
containsKey(Object key)
Returns true if the map contains an element for the supplied key. |
boolean |
containsValue(Object value)
This is an expensive operation that determines if the object supplied is mapped to any key. |
void |
dumpCacheEntries()
Dump the cache entries from first to list for debugging. |
void |
dumpMap()
Dump the cache map for debugging. |
Set<Map.Entry<K,V>> |
entrySet()
This returns a set of entries. |
V |
get(Object key)
|
int |
getChunkSize()
|
int |
getMaxObjects()
|
V |
getQuiet(Object key)
This gets an element out of the map without adjusting it's posisiton in the LRU. |
IStats |
getStatistics()
|
boolean |
isEmpty()
Returns true if the map is empty. |
Set<K> |
keySet()
|
protected void |
processRemovedLRU(K key,
V value)
This is called when an item is removed from the LRU. |
V |
put(K key,
V value)
|
void |
putAll(Map<? extends K,? extends V> source)
|
V |
remove(Object key)
|
void |
setChunkSize(int chunkSize)
The chunk size is the number of items to remove when the max is reached. |
int |
size()
This simply returned the number of elements in the map. |
Collection<V> |
values()
|
protected void |
verifyCache()
Checks to see if all the items that should be in the cache are. |
protected void |
verifyCache(Object key)
Logs an error is an element that should be in the cache is not. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface java.util.Map |
|---|
equals, hashCode |
| Field Detail |
|---|
protected Map<K,LRUElementDescriptor<K,V>> map
| Constructor Detail |
|---|
public LRUMap()
public LRUMap(int maxObjects)
maxObjects - | Method Detail |
|---|
public int size()
size in interface Map<K,V>Map.size()public void clear()
clear in interface Map<K,V>Map.clear()public boolean isEmpty()
isEmpty in interface Map<K,V>Map.isEmpty()public boolean containsKey(Object key)
containsKey in interface Map<K,V>Map.containsKey(java.lang.Object)public boolean containsValue(Object value)
containsValue in interface Map<K,V>Map.containsValue(java.lang.Object)public Collection<V> values()
values in interface Map<K,V>public void putAll(Map<? extends K,? extends V> source)
putAll in interface Map<K,V>source - public V get(Object key)
get in interface Map<K,V>key -
public V getQuiet(Object key)
key -
public V remove(Object key)
remove in interface Map<K,V>key -
public V put(K key,
V value)
put in interface Map<K,V>key - value -
public void dumpCacheEntries()
public void dumpMap()
protected void verifyCache()
protected void verifyCache(Object key)
key -
protected void processRemovedLRU(K key,
V value)
Children can implement this method for special behavior.
key - value - public void setChunkSize(int chunkSize)
chunkSize - The chunkSize to set.public int getChunkSize()
public IStats getStatistics()
public Set<Map.Entry<K,V>> entrySet()
TODO we should return out own set wrapper, so we can avoid the extra object creation if it isn't necessary.
entrySet in interface Map<K,V>Map.entrySet()public Set<K> keySet()
keySet in interface Map<K,V>public int getMaxObjects()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||