public final class SynchronizedLRUMap extends SequencedHashMap implements Externalizable
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 the 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().
| Modifier and Type | Field and Description |
|---|---|
protected static int |
DEFAULT_MAX_SIZE
Default maximum size
|
private int |
maximumSize
Maximum size
|
private static long |
serialVersionUID |
| Constructor and Description |
|---|
SynchronizedLRUMap()
Default constructor, primarily for the purpose of de-externalization.
|
SynchronizedLRUMap(int maxSize)
Create a new LRUMap with a maximum capacity of i.
|
| Modifier and Type | Method and Description |
|---|---|
Object |
get(Object key)
Get the value for a key from the Map.
|
int |
getMaximumSize()
Getter for property maximumSize.
|
Object |
put(Object key,
Object value)
Removes the key and its Object from the Map.
|
private 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.
|
clear, clone, containsKey, containsValue, entrySet, equals, get, getFirst, getFirstKey, getFirstValue, getLast, getLastKey, getLastValue, getValue, hashCode, indexOf, isEmpty, iterator, keySet, lastIndexOf, putAll, readExternal, remove, remove, sequence, size, toString, values, writeExternalfinalize, getClass, notify, notifyAll, wait, wait, waitreadExternal, writeExternalcompute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAllprivate static final long serialVersionUID
private int maximumSize
protected static final int DEFAULT_MAX_SIZE
public SynchronizedLRUMap()
public SynchronizedLRUMap(int maxSize)
maxSize - Maximum capacity of the LRUMappublic Object get(Object key)
Get the value for a key from the Map. The key will be promoted to the Most Recently Used position. Note that get(Object) operations will modify the underlying Collection. Calling get(Object) inside of an iteration over keys, values, etc. is currently unsupported.
get in interface Mapget in class SequencedHashMapkey - Key to retrievepublic 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 interface Mapput in class SequencedHashMapkey - Key of the Object to add.value - Object to addprivate void removeLRU()
public int getMaximumSize()
public void setMaximumSize(int maximumSize)
maximumSize - New value of property maximumSize.Copyright © 2003–2019 The Apache Software Foundation. All rights reserved.