LinkedHashMap
をどのように縮小できますか?私はremoveEldestEntry
メソッドをオーバーライドしましたが、このメソッドは新しい値が挿入されたときに一度しか呼び出されません。このように地図を小さくする変更はありません。JavaでLinkedHashMapを小さくする
LinkedHashMap
は私の通常のIterator
を与え、任意のremoveLast
またはlistIterator
メソッドを持っていないので、どのようにあなたが最後に、1000年と言う、エントリを検索し、それらを削除することができますか?
私が考えることができる唯一の方法は、そのすべてを繰り返すことです。しかし、それは年を取ることができます...
私はいくつかの要素だけを削除するたびに新しいマップを作成すると、メモリも破壊されます。
removeEldestEntry
メソッドでmaxSize
が縮小された場合は、最初にIterator
の最初の値を削除してから、再度挿入してください。そして、再挿入は最も古い値を追い出すでしょう。これは非常に醜いコードです...どんな良いアイデア?
EDIT:最も古いものから最も若いものを選択してください。それで簡単です