¿Cómo se puede reducir un LinkedHashMap
? Anulé el método removeEldestEntry
, pero este método solo se llama una vez cuando se inserta un nuevo valor. Por lo tanto, no hay ningún cambio en hacer el mapa más pequeño de esta manera.Shrink LinkedHashMap en Java
El LinkedHashMap
sólo da una normal de mi Iterator
y no tiene ningún método removeLast
o listIterator
, así que ¿cómo se puede encontrar las últimas decir, 1000, entradas y eliminarlos?
La única forma en que puedo pensar es en recorrer todo el asunto. Pero eso puede llevar siglos ...
Crear un nuevo mapa cada vez que deseo eliminar solo algunos elementos también destruirá la memoria.
Quite los primeros valores del Iterator
y luego vuelva a insertarlos cuando el maxSize
se redujo en el método removeEldestEntry
. Luego, la reinsección eliminaría los valores más antiguos. Este es un código muy feo ... ¿Alguna idea mejor?
EDITAR: Sry el orden de iteración es de mayor a menor. Por lo tanto, es fácil