Как вы можете уменьшить LinkedHashMap
?Я переопределил метод removeEldestEntry
, но этот метод вызывается только один раз, когда вставляется новое значение.Таким образом, изменение размера карты таким образом не изменится.
LinkedHashMap
дает мне только нормальный Iterator
и не имеет removeLast
или listIterator
метода, так как вынайти последние, скажем 1000, записи и удалить их?
Единственный способ, которым я могу придумать, - это итерация всей этой вещи.Но это может занять много времени ...
Создание новой карты каждый раз, когда я хочу удалить только несколько элементов, также разрушит память.
Возможно, удалите первые значения Iterator
, а затем вставьте их заново, когда maxSize
был уменьшен в методе removeEldestEntry
.Тогда переустановка выкинет самые старые значения.Это очень уродливый код ... Какие-нибудь лучшие идеи?
РЕДАКТИРОВАТЬ: Sry порядок итераций самый старый для самых маленьких.Так легко