我一直在四處尋找一個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. javascript設置cookie到期時間
- 6. PHP Cookie設置到期時間爲無
- 7. 日期 - Java到Sql表和SQL表通過Joda時間到Java時間
- 8. 設置Cookie過期時間。
- 9. 設置日期時間
- 10. 設置笨MySQL的日期時間列時間()始終將其設置爲0
- 11. 序列化c#日期時間到Java時間和Java日期SAP Web服務
- 12. 設置時間戳在Java
- 13. 如何設置Big Query表的到期時間?
- 14. 設置到期日期+ java + mysql
- 15. 設置GPS位置的'過期'時間
- 16. 如何設置時間到紀元時間java?
- 17. PHP設置日期時間功能設置不同的日期
- 18. 解析日期時間到JAVA日期
- 19. 在java中設置的時間間隔
- 20. 日期時間選擇器 - 設置開始日期和時間
- 21. 如何在設置日期到當前日期捕獲值列表字段更改時的當前時間
- 22. java列表處理時間
- 23. Java - 設置文件創建日期和時間
- 24. 如何在JAVA(Netbeans)中爲JSpinner設置日期和時間?
- 25. 在Java中設置Saxon的當前日期時間
- 26. Java腳本:如何修改日期時間變量以設置特定時間?
- 27. 以設定的時間間隔將列表中斷到新列
- 28. 設置日期時間格式的UpdateModel
- 29. Node.js - 設置系統日期/時間
- 30. 在App.Config中設置日期時間
你的用例是什麼? – Bohemian 2012-07-24 00:24:33
我很難看到一個用例。通常,當你想要緩存某些東西時,你需要一個密鑰來檢索緩存的內容,這就是爲什麼每個緩存實現都與Map接口(或類似的東西)一起工作的原因。 – Matt 2012-07-24 00:57:44
你仍然可以遍歷集合 – 2012-07-24 01:21:41