我对Guava 10中引入的CacheBuilder和Cache感到有些困惑。文档暗示可以overwrite values,但据我所知,{{3} }不包含任何执行此操作的方法。有什么想法吗?
我正在尝试构建一个Map,它在上次读取或写入后10秒钟到期。当查找一个值时,我希望返回先前设置的值,或者如果不存在则计算默认值。
注意:此问题已过时。虽然上面的Javadoc显示了Cache.put(K key, V value)
方法的存在,但是当问题首次发布时它不存在。
答案 0 :(得分:6)
很长一段时间,Cache#asMap
会返回ConcurrentMap
视图。
AFAIK,还没有。但有一个thread提到 Cache.asMap.put
计划在第11版发布。
如果CacheBuilder
从MapMaker
(当前缓存设置方法的位置)发展,我会说Javadoc的当前旧状态是一个残余建议使用)。
我正在尝试构建一个Map,它在上次读取或写入后10秒钟到期。当查找一个值时,我希望返回先前设置的值,或者如果不存在则计算默认值。
使用expireAfterAccess(10, TimeUnit.SECONDS)
会在访问后保持一个条目存活10秒。您获得的唯一值是您CacheLoader
计算的值(早期或get
期间)。
答案 1 :(得分:3)
次要更新。 Cache.asMap().put()
应该在2011年10月的第一周的某个时间出现在Guava 10.1中。有关详细信息,请参阅this thread。