Um cache LRU (Least Recently Used) remove o item que não foi acessado por mais tempo quando atinge a capacidade. O design clássico combina uma hash map (busca O(1)) com uma doubly linked list (reordenação O(1)), resultando em get e put em O(1).
Estrutura de duas estruturas de dados
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)
