java hashmap lru

java - LinkedHashSet para implementar LRU



hashmap (1)

Sé que hay un método removeEldestEntry que tengo que anular

Esta afirmación es incorrecta ya que LinkedHashSet HAS-A LinkedHashMap y no IS-A.

Puede usar el método útil (aunque no muy conocido) Collections.newSetFromMap :

Set<String> mySet = Collections.newSetFromMap(new LinkedHashMap<String, Boolean>(){ protected boolean removeEldestEntry(Map.Entry<String, Boolean> eldest) { return size() > MAX_ENTRIES; } });

De este modo, devolverá una visión de Set de LinkedHashMap (una interfaz similar a Set) implementando su método removeEldestEntry personalizado.

MAX_ENTRIES es una constante personalizada que MAX_ENTRIES definido.

Quiero eliminar el miembro más antiguo de un LinkedHashSet , sé que hay un método removeEldestEntry que tengo que anular ( documento Java para eliminar EldestEntry ), pero supongo que tengo que definir initial capacity y load factor que no me importa y Simplemente quiero eliminar el elemento al que se accedió menos recientemente (aquí, por acceso me refiero a put mientras ya está en el conjunto o se está leyendo)

¿Hay alguna forma de no anular removeEldestEntry ?