我一直在四處尋找一個Java列表,集合或類似的東西在給定的時間段後有條目到期,但我還沒有找到。我發現番石榴的CacheBuilder
,這對我來說幾乎是完美的,但它是一個地圖而不是一個列表或集合。有沒有像這樣的東西,或者如果我想使用它,我將不得不做出一個?Java時間到期列表/設置?
回答
由於Java HashSet實現在內部使用了一個HashMap,所以它應該很容易複製/修改代碼,以便它使用Guavas CacheBuilder。
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable
{
static final long serialVersionUID = -5024744406713321676L;
private transient HashMap<E,Object> map;
...
換句話說,只是實現您SetWithExpiration
從鍵鍵CacheBuilder
地圖。這將失去更多的效率比Java HashSet
實施失去了通過使用基礎HashMap
。
不是那麼簡單。重新發明'HashSet'類是一個不好的主意,你不能只是「使HashSet使用CacheBuilder」代替, – Bohemian 2012-07-24 00:24:02
是的,乾淨的代碼解決方案將擴展AbstractSet並在內部使用依賴注入傳遞的Map 。 – 2012-07-24 01:39:09
要使用CacheBuilder
獲取時間過期列表,您可以將對象作爲鍵放入地圖中,並將某些虛擬對象作爲值放入。
或使用您的對象作爲鍵和值。只要注意不要爲每個假人創建一個新對象,因爲那樣會浪費。 – 2015-04-06 09:19:24
- 1. 設置Cookie到期時間
- 2. JQuery的餅乾設置到期時間
- 3. ETAG - 如何設置到期時間?
- 4. 如何設置UILocalNotification的到期時間?
- 5. 日期 - Java到Sql表和SQL表通過Joda時間到Java時間
- 6. 設置笨MySQL的日期時間列時間()始終將其設置爲0
- 7. 如何設置Big Query表的到期時間?
- 8. 設置到期日期+ java + mysql
- 9. 設置GPS位置的'過期'時間
- 10. PHP設置日期時間功能設置不同的日期
- 11. 在java中設置的時間間隔
- 12. 日期時間選擇器 - 設置開始日期和時間
- 13. 如何在設置日期到當前日期捕獲值列表字段更改時的當前時間
- 14. 設置作業時間表
- 15. java列表處理時間
- 16. Java腳本:如何修改日期時間變量以設置特定時間?
- 17. 以設定的時間間隔將列表中斷到新列
- 18. 設置日期時間格式的UpdateModel
- 19. Report Builder - 設置日期時間參數
- 20. 設置日期時間約會計劃
- 21. 爲會話設置過期時間
- 22. YUI設置cookies過期時間
- 23. 設置文件的日期和時間
- 24. 設置日期時間爲23:59:59
- 25. 爲MVC3設置DataFormatString日期時間
- 26. 重新設置僅在熊貓系列日期時間指數
- 27. 如何跨列設置時間和日期格式
- 28. 如何在日期或時間戳列中設置明天
- 29. 如何將日期時間列和int列組合到日期時間列中
- 30. 設置日期和時間從各自的選擇器到設置鬧鐘
你的用例是什麼? – Bohemian 2012-07-24 00:24:33
我很難看到一個用例。通常,當你想要緩存某些東西時,你需要一個密鑰來檢索緩存的內容,這就是爲什麼每個緩存實現都與Map接口(或類似的東西)一起工作的原因。 – Matt 2012-07-24 00:57:44
你仍然可以遍歷集合 – 2012-07-24 01:21:41