2011-09-30 44 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

相关问题