use*_*993 2 java servlets map guava
这是我的HashMap.
Map<String,MyObject> mymap=new HashMap<String,MyObject>();
Run Code Online (Sandbox Code Playgroud)
我想执行像get和put这样的正常操作,我想再做一次操作,即当对象访问超过一定时间时,地图会自动删除一个对象
它与谷歌番石榴相似吗?如果是,请举个例子.据我读到番石榴doenot支持.
如果没有,有没有办法做到这一点?
编辑:每当我收到用户的GET请求时,我创建myobject并将其存储在map.And如果我从具有相同Key的用户那里得到另一个请求,我从用户那里获取存储的对象,做一些操作并再次存储回来了.
如果键是新键,则映射应返回null
请参阅guava的CacheBuilder上的javadoc(它包含示例):
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/cache/CacheBuilder.html
另外:https://code.google.com/p/guava-libraries/wiki/CachesExplained
更新:没有必要使用缓存加载器,或者有一个加载方法.此测试用例通过:
@Test
public void testManualInsertion() {
Cache<String, String> cache = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.removalListener(new MyRemovalListener())
.concurrencyLevel(4)
.recordStats()
.build();
cache.put("someKey", "someValue");
assertEquals("someValue", cache.getIfPresent("someKey"));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3196 次 |
| 最近记录: |