Java 如何将哈希映射转换为可缓存映射

Java 如何将哈希映射转换为可缓存映射,java,hashmap,guava,Java,Hashmap,Guava,我所指的是: 我有一个哈希映射,当前定义如下: Map<String, String> barcodeMap = Maps.newHashMap(); //Declaring hashmap while ((nextLine = reader.readNext()) != null) // populating hashmap { barcodeMap.put(nextLine[0], nextLine[1]); } Map barcodeMap=Maps.newHash

我所指的是:

我有一个哈希映射,当前定义如下:

Map<String, String> barcodeMap = Maps.newHashMap(); //Declaring hashmap
while ((nextLine = reader.readNext()) != null) // populating hashmap
 {
  barcodeMap.put(nextLine[0], nextLine[1]);
 }
Map barcodeMap=Maps.newHashMap()//声明hashmap
while((nextLine=reader.readNext())!=null)//填充hashmap
{
barcodeMap.put(nextLine[0],nextLine[1]);
}

我希望我的地图可以用缓存实现,在缓存中一次只存储两个小时,我试着阅读链接中的示例,但我不明白如何更改当前地图。我知道我必须先填充映射,然后再使用逐出,但我不知道我将如何更改当前代码。

这非常简单,尽管我可以看到混淆,因为他们给出的所有示例都假设您使用缓存加载程序来填充缓存,如果您以前使用映射,您不会这样做

因此,给出的示例是:

 LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
   .maximumSize(1000)
   .expireAfterWrite(10, TimeUnit.MINUTES)
   .removalListener(MY_LISTENER)
   .build(
       new CacheLoader<Key, Graph>() {
         public Graph load(Key key) throws AnyException {
           return createExpensiveGraph(key);
         }
       });
LoadingCache-graphs=CacheBuilder.newBuilder()
.最大尺寸(1000)
.expireAfterWrite(10,时间单位:分钟)
.removalListener(我的侦听器)
.建造(
新缓存加载程序(){
公共图加载(键)引发任何异常{
返回createExpensiveGraph(键);
}
});
您直接插入地图,而不是使用加载程序,因此请删除加载部分:

 Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
   .maximumSize(1000)
   .expireAfterWrite(10, TimeUnit.MINUTES)
   .removalListener(MY_LISTENER)
   .build();
Cache graphs=CacheBuilder.newBuilder()
.最大尺寸(1000)
.expireAfterWrite(10,时间单位:分钟)
.removalListener(我的侦听器)
.build();
删除项目时不需要通知

 Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
   .maximumSize(1000)
   .expireAfterWrite(10, TimeUnit.MINUTES)
   .build();
Cache graphs=CacheBuilder.newBuilder()
.最大尺寸(1000)
.expireAfterWrite(10,时间单位:分钟)
.build();
不需要固定大小的缓存,只想在时间上限制它

 Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
   .expireAfterWrite(10, TimeUnit.MINUTES)
   .build();
Cache graphs=CacheBuilder.newBuilder()
.expireAfterWrite(10,时间单位:分钟)
.build();
你说你需要2小时,你的版本是String,String,所以

 Cache<String, String> graphs = CacheBuilder.newBuilder()
   .expireAfterWrite(2, TimeUnit.HOURS)
   .build();
Cache graphs=CacheBuilder.newBuilder()
.expireAfterWrite(2,时间单位为小时)
.build();

那么您尝试了什么?你到底不明白什么?我建议你从你提供的链接中给出的例子开始。您只需删除不需要的位并更改过期时间。