KAR*_*ván 20
10.0版的新Guava库引入了Cache专门用于缓存的界面.
它附带CacheBuilder,类似于MapMaker所有缓存方法MapMaker将在版本11中删除.
文档中的示例:
Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
.concurrencyLevel(4)
.weakKeys()
.maximumSize(10000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.build(
new CacheLoader<Key, Graph>() {
public Graph load(Key key) throws AnyException {
return createExpensiveGraph(key);
}
});
Run Code Online (Sandbox Code Playgroud)
听起来像你想要MapMaker.makeComputingMap,但你提到softKeys所以我假设你已经熟悉那个班级.
你是对的softKeys- 如果你动态地组合键,它将无法工作,因为softKeys使用地图==而不是equals键进行比较.但是你应该没事,softValues并且expiration,只要重新创建一个被驱逐的条目没有副作用.