Come si può ridurre a LinkedHashMap
? Ho annullato il metodo removeEldestEntry
, ma questo metodo viene chiamato una sola volta quando viene inserito un nuovo valore. Quindi non vi è alcun cambiamento nel rendere la mappa più piccola in questo modo.Shrink LinkedHashMap in Java
L'LinkedHashMap
dà solo la mia normale Iterator
e non ha alcun metodo removeLast
o listIterator
, così come si possono trovare gli ultimi, diciamo 1000, voci e rimuoverli?
L'unico modo in cui riesco a pensare è l'iterazione di tutto ciò. Ma questo può richiedere anni ...
Creare una nuova mappa ogni volta che voglio rimuovere solo alcuni elementi distruggerà anche la memoria.
Forse rimuovere i primi valori di Iterator
e quindi reinserirli, quando maxSize
è stato ridotto nel metodo removeEldestEntry
. Quindi il reinserimento darebbe il via ai valori più vecchi. Questo è un codice molto brutto ... Qualche idea migliore?
MODIFICA: Sry l'ordine di iterazione è il più vecchio al più giovane. Quindi è facile