elhor maneira de implementar o cache L

Eu estava olhando para esse problema de implementação do cache LRU, onde após o tamanho do cache estar cheio, o item menos usado recentemente é exibido e é substituído pelo novo ite

Tenho duas implementações em mente:

1). Crie dois mapas que se parecem com isso

std::map<timestamp, k> time_to_key
std::map<key, std::pair<timestamp, V>> LRUCache

Para inserir um novo elemento, podemos colocar o timestamp e o valor atuais no LRUCache. Embora quando o tamanho do cache esteja cheio, podemos remover o elemento menos recente encontrando o menor carimbo de data / hora presente emTemp_parachav e remover a chave correspondente de LRUCache. A inserção de um novo item é O (1), a atualização do registro de data e hora é O (n) (porque precisamos pesquisar ok correspondente ao registro de data e hora emTemp_parachav.

2). Tenha uma lista vinculada na qual o cache usado menos recentemente esteja presente no cabeçalho e o novo item seja adicionado no final. Quando chega um item que já está presente no cache, o nó correspondente à chave desse item é movido para o final da lista. A inserção de um novo item é O (1), a atualização do registro de data e hora é novamente O (n) (porque precisamos ir para o final da lista) e a exclusão de um elemento é O (1).

gora tenho as seguintes perguntas:

ual dessas implementações é melhor para um LRUCach

Existe outra maneira de implementar o cache LR

Em Java, devo usar o HashMap para implementar o LRUCache

Vi perguntas como implementar um cache LRU genérico e também vi perguntas como implementar um cache LRU. O cache LRU genérico é diferente do cache LRU?

Desde já, obrigado!!

EDITAR

Outra maneira (mais fácil) de implementar o LRUCache em Java é usando o LinkedHashMap e substituindo a função booleana removeEldestEntry (Map.entry eldest

questionAnswers(9)

yourAnswerToTheQuestion