|
||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.apache.commons.collections.SequencedHashMap | +--org.apache.commons.collections.LRUMap
An implementation of a Map which has a maximum size and uses a Least Recently Used algorithm to remove items from the Map when the maximum size is reached and new items are added.
A synchronized version can be obtained with:
Collections.synchronizedMap( theMapToSynchronize )
If it will be accessed by multiple threads, you _must_ synchronize access
to this Map. Even concurrent get(Object) operations produce indeterminate
behaviour.
Unlike that Collections 1.0 version, this version of LRUMap does use a true LRU algorithm. The keys for all gets and puts are moved to the front of the list. LRUMap is now a subclass of SequencedHashMap, and the "LRU" key is now equivalent to LRUMap.getFirst().
Inner classes inherited from class java.util.Map |
Map.Entry |
Constructor Summary | |
LRUMap()
Default constructor, primarily for the purpose of de-externalization. |
|
LRUMap(int i)
Create a new LRUMap with a maximum capacity of i. |
Method Summary | |
int |
getMaximumSize()
Getter for property maximumSize. |
protected void |
processRemovedLRU(Object key,
Object value)
Subclasses of LRUMap may hook into this method to provide specialized actions whenever an Object is automatically removed from the cache. |
Object |
put(Object key,
Object value)
Removes the key and its Object from the Map. |
void |
readExternal(ObjectInput in)
|
protected void |
removeLRU()
This method is used internally by the class for finding and removing the LRU Object. |
void |
setMaximumSize(int maximumSize)
Setter for property maximumSize. |
void |
writeExternal(ObjectOutput out)
|
Methods inherited from class org.apache.commons.collections.SequencedHashMap |
clear, clone, containsKey, containsValue, entrySet, get, get, getFirst, getFirstKey, getFirstValue, getLast, getLastKey, getLastValue, getValue, indexOf, isEmpty, iterator, keySet, lastIndexOf, putAll, remove, remove, sequence, size, values |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface java.util.Map |
equals, hashCode |
Constructor Detail |
public LRUMap()
public LRUMap(int i)
i
- Maximum capacity of the LRUMapMethod Detail |
public int getMaximumSize()
protected void processRemovedLRU(Object key, Object value)
key
- key that was removedvalue
- value of that key (can be null)public Object put(Object key, Object value)
Removes the key and its Object from the Map.
(Note: this may result in the "Least Recently Used" object being removed from the Map. In that case, the removeLRU() method is called. See javadoc for removeLRU() for more details.)
put
in class SequencedHashMap
key
- Key of the Object to add.value
- Object to addremoveLRU()
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
readExternal
in interface Externalizable
readExternal
in class SequencedHashMap
protected void removeLRU()
public void setMaximumSize(int maximumSize)
maximumSize
- New value of property maximumSize.public void writeExternal(ObjectOutput out) throws IOException
writeExternal
in interface Externalizable
writeExternal
in class SequencedHashMap
|
||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |