LinkedHashMap
看起來很棒,可以實現LRU Cache。它在鏈表管理方面有一些開銷,而不是線程安全的,但是它簡化了實現,我可以在我的代碼中處理這些。LinkedHashMap removeEldestEntry:刪除了多少個元素?
這個問題我有,我不覺得到目前爲止,有關的回答是有多少元素的LinkedHashMap從列表中刪除,如果removeEldestEntry實施,並把查找表滿。
它是否不再只是一個元素?或總大小的一定百分比。我擔心的是,如果它只消除了一個元素來放置新元素,那麼它就是一個真正的性能問題。正如我所看到的,重組操作非常昂貴。
請有人建議它是如何工作的,如果我可以管理這些被刪除的元素使用參數:initialCapacity,LoadFactor或任何其他方式計算。
感謝Jeff,Peter的回覆,然後我不使用removeEldestEntry,而是在元素的年齡保持在緩存元素中,並且每當我的覆蓋發現緩存已滿時,它將刪除最老的元素的20%。此外,我不讓get方法返回已經過期的緩存中的任何元素。 – Ravindra 2012-07-27 10:30:33
爲什麼不移除任何已過期的元素,以及移除任何已過期的元素。如果您刪除20%,則可以刪除尚未過期的元素。 – 2012-07-27 10:47:33
是的,我可以用這種方式去除未過期的元素。至於刪除1 exprired元素,我的get方法做到了這一點,並返回null給調用者。 – Ravindra 2012-07-27 10:56:36