Jak można zmniejszyć LinkedHashMap
? Przeanalizowałem metodę removeEldestEntry
, ale ta metoda jest wywoływana tylko raz, gdy wstawiana jest nowa wartość. Nie ma więc żadnej zmiany w zmniejszaniu mapy w ten sposób.Zmniejszyć LinkedHashMap w Javie
LinkedHashMap
tylko daje mój normalny Iterator
i nie ma żadnego removeLast
lub listIterator
metody, tak jak można znaleźć ostatnie, powiedzmy 1000, wpisy i je usunąć?
Jedyny sposób, w jaki mogę myśleć, to powtarzanie całej tej sprawy. Ale to może potrwać wieki ...
Tworzenie nowej mapy za każdym razem, gdy chcę usunąć tylko kilka elementów, spowoduje również zniszczenie pamięci.
Może usunąć pierwsze wartości z Iterator
, a następnie ponownie je wstawić, gdy maxSize
została zmniejszona w metodzie removeEldestEntry
. Następnie ponowne włożenie wyrzuciłoby najstarsze wartości. To bardzo brzydki kod ... Jakieś lepsze pomysły?
EDYCJA: Sry kolejność iteracji jest najstarsza dla najmłodszych. Więc jest to łatwe