2011-09-30 32 views
9

我有點困惑於在Guava 10中引入的CacheBuilderCache。文檔提示可以使用overwrite values,但據我所知,Cache不包含任何這樣做的方法。有任何想法嗎?如何將()值放入Guava的Cache類中?

我試圖構建一個映射,它在上次讀取或寫入10秒後過期了一個鍵。當查找一個值時,我希望返回先前設置的值,或者如果不存在,則計算默認值。

備註:此問題已過時。雖然上面的Javadoc顯示了Cache.put(K key, V value)方法的存在,但在問題首次發佈時並不存在。

回答

6

長期以來,有Cache#asMap返回ConcurrentMap視圖。

AFAIK,還沒有。但有一個 thread提的是 Cache.asMap.put計劃發佈11

我想說的Javadoc的 當前 老態是一個殘如果CacheBuilder的從MapMaker演進(其中高速緩存設置方法目前已棄用)。

我試圖構建一個地圖,它在上次讀取或寫入後10秒過期。當查找一個值時,我希望返回先前設置的值,或者如果不存在,則計算默認值。

使用expireAfterAccess(10, TimeUnit.SECONDS)將保持一個條目在任何訪問後保持10秒的存在狀態。並且您將獲得的唯一數值是您的CacheLoader(早期或在get期間)計算出的值。

+3

番石榴10.0.1應該已經解決了這個問題。 http://groups.google.com/group/guava-discuss/browse_thread/thread/f01f7583bb4422d7 – jvdneste

3

次要更新。 Cache.asMap().put()應在2011年10月第一週的某個時間在Guava 10.1中顯示。有關更多信息,請參見this thread

相關問題