どのように縮小できますLinkedHashMap
か?メソッドをオーバーライドしましたremoveEldestEntry
が、このメソッドは新しい値が挿入されたときに 1 回だけ呼び出されます。したがって、この方法でマップを小さくすることに変更はありません。
LinkedHashMap
のみが法線を提供し、またはメソッドIterator
はありません。では、最後の、たとえば 1000 のエントリを見つけて削除するにはどうすればよいでしょうか。removeLast
listIterator
私が考えることができる唯一の方法は、そのすべてを繰り返すことです。しかし、それには何年もかかることがあります...
いくつかの要素だけを削除したいたびに新しいマップを作成すると、メモリも破壊されます。
メソッドで が削減されたときに、 の最初の値を削除してIterator
から再挿入した可能性があります。次に、再挿入すると、最も古い値が追い出されます。これは非常に醜いコードです...もっと良いアイデアはありますか?maxSize
removeEldestEntry
編集: Sry 反復順序は古いものから新しいものへです。だから簡単です