java.util · java.base · since Java 1.4
LinkedHashMap
public class LinkedHashMap<K, V> extends HashMap<K, V>
implements SequencedMap<K, V>HashMap with a linked entry order — insertion order by default, access order optionally, which plus removeEldestEntry makes a six-line LRU cache.
Key methods
LinkedHashMap(int cap, float load, boolean accessOrder) | accessOrder=true reorders on get/put — LRU mode. |
protected boolean removeEldestEntry(Map.Entry<K,V> eldest) | Override to evict automatically on insert; default always returns false. |
static <K,V> LinkedHashMap<K,V> newLinkedHashMap(int numMappings) | Correctly presized factory (Java 19+). |
Example
class LruCache<K, V> extends LinkedHashMap<K, V> {
private final int maxSize;
LruCache(int maxSize) {
super(16, 0.75f, true); // accessOrder = true
this.maxSize = maxSize;
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() > maxSize;
}
}