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 ?