Ein LRU-Cache (Least Recently Used) entfernt den Eintrag, auf den über die längste Zeit nicht zugegriffen wurde, wenn die Kapazität erreicht ist. Das klassische Design kombiniert eine Hash-Map (O(1) Lookup) mit einer doppelt verketteten Liste (O(1) Umordnung) und ergibt O(1) get und put.
Das Zwei-Strukturen-Design
HashMap: key -> node DLL (recency order):
MRU <-> ... <-> LRU
get/put: map finds node move touched node to front (MRU)
in O(1); DLL splices it evict the tail (LRU) when full
to the front in O(1)
