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
?