java.lang.Object | +--org.apache.commons.collections.map.AbstractHashedMap | +--org.apache.commons.collections.map.AbstractLinkedMap | +--org.apache.commons.collections.map.LRUMapAll Implemented Interfaces:
static int | Default maximum size |
LRUMap() Constructs a new empty map with a maximum size of 100. |
LRUMap(int maxSize) Constructs a new, empty map with the specified maximum size. |
LRUMap(int maxSize, float loadFactor) Constructs a new, empty map with the specified initial capacity and load factor. |
LRUMap(Map map) Constructor copying elements from another map. |
void | addMapping(int hashIndex, int hashCode, Object key, Object value) Adds a new key-value mapping into this map. |
Object | clone() Clones the map without cloning the keys or values. |
void | doReadObject(ObjectInputStream in) Reads the data necessary for put() to work in the superclass. |
void | doWriteObject(ObjectOutputStream out) Writes the data necessary for put() to work in deserialization. |
Object | get(Object key) Gets the value mapped to the key specified. |
boolean | isFull() Returns true if this map is full and no new mappings can be added. |
int | maxSize() Gets the maximum size of the map (the bound). |
void | moveToMRU(AbstractLinkedMap.LinkEntry entry) Moves an entry to the MRU position at the end of the list. |
boolean | removeLRU(AbstractLinkedMap.LinkEntry entry) Subclass method to control removal of the least recently used entry from the map. |
void | reuseMapping(AbstractLinkedMap.LinkEntry entry, int hashIndex, int hashCode, Object key, Object value) Reuses an entry by removing it and moving it to a new place in the map. |
void | updateEntry(AbstractHashedMap.HashEntry entry, Object newValue) Updates an existing key-value mapping. |
protected static final int DEFAULT_MAX_SIZE
public LRUMap()
public LRUMap(int maxSize, float loadFactor)
- if the maximum size is less than one
- if the load factor is less than zeropublic LRUMap(int maxSize)
- if the maximum size is less than onepublic LRUMap(Map map)
- if the map is null
- if the map is emptyprotected void addMapping(int hashIndex, int hashCode, Object key, Object value)
public Object clone()
protected void doReadObject(ObjectInputStream in)
put()
to work in the superclass.
protected void doWriteObject(ObjectOutputStream out)
put()
to work in deserialization.
public Object get(Object key)
public boolean isFull()
public int maxSize()
protected void moveToMRU(AbstractLinkedMap.LinkEntry entry)
protected boolean removeLRU(AbstractLinkedMap.LinkEntry entry)
protected boolean removeLRU(LinkEntry entry) { releaseResources(entry.getValue()); // release resources held by entry return true; // actually delete entry }Alternatively, a subclass may choose to not remove the entry or selectively keep certain LRU entries. For example:
protected boolean removeLRU(LinkEntry entry) { if (entry.getKey().toString().startsWith("System.")) { return false; // entry not removed from LRUMap } else { return true; // actually delete entry } }Note that the effect of not removing an LRU is for the Map to exceed the maximum size.
protected void reuseMapping(AbstractLinkedMap.LinkEntry entry, int hashIndex, int hashCode, Object key, Object value)
protected void updateEntry(AbstractHashedMap.HashEntry entry, Object newValue)
Map
implementation with a fixed maximum size which removes the least recently used entry if an entry is added when full. The least recently used algorithm works on the get and put operations only. Iteration of any kind, including setting the value by iteration, does not change the order. Queries such as containsKey and containsValue or access via views also do not change the order. The map implementsOrderedMap
and entries may be queried using the bidirectionalOrderedMapIterator
. The order returned is least recently used to most recently used. Iterators from map views can also be cast toOrderedIterator
if required. All the available iterators can be reset back to the start by casting toResettableIterator
and callingreset()
.