java.util · java.base · since Java 1.4

LinkedHashMap

declaration
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

Java
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;
    }
}
Access-order mode plus removeEldestEntry turns LinkedHashMap into a fixed-size LRU cache in six lines.