如何将()值放入Guava的Cache类中?

时间:2011-09-30 21:14:19

标签: java guava

我对Guava 10中引入的CacheBuilderCache感到有些困惑。文档暗示可以overwrite values,但据我所知,{{3} }不包含任何执行此操作的方法。有什么想法吗?

我正在尝试构建一个Map,它在上次读取或写入后10秒钟到期。当查找一个值时,我希望返回先前设置的值,或者如果不存在则计算默认值。

注意:此问题已过时。虽然上面的Javadoc显示了Cache.put(K key, V value)方法的存在,但是当问题首次发布时它不存在。

2 个答案:

答案 0 :(得分:6)

很长一段时间,Cache#asMap会返回ConcurrentMap视图。

AFAIK,还没有。但有一个thread提到Cache.asMap.put计划在第11版发布。

如果CacheBuilderMapMaker(当前缓存设置方法的位置)发展,我会说Javadoc的当前旧状态是一个残余建议使用)。

  

我正在尝试构建一个Map,它在上次读取或写入后10秒钟到期。当查找一个值时,我希望返回先前设置的值,或者如果不存在则计算默认值。

使用expireAfterAccess(10, TimeUnit.SECONDS)会在访问后保持一个条目存活10秒。您获得的唯一值是您CacheLoader计算的值(早期或get期间)。

答案 1 :(得分:3)

次要更新。 Cache.asMap().put()应该在2011年10月的第一周的某个时间出现在Guava 10.1中。有关详细信息,请参阅this thread