gpt4 book ai didi

java - 如何将 HashMap 转换为可缓存的 map

转载 作者:行者123 更新时间:2023-12-04 21:28:37 24 4
gpt4 key购买 nike

我指的是以下内容:

https://code.google.com/p/guava-libraries/wiki/CachesExplained

我有一个 HashMap 当前定义如下:

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

我希望我的 map 使用缓存来实现,它一次只存储两个小时,我尝试阅读我放置的链接中的示例,但我不明白如何更改我当前的 map 。我知道我必须填充 map 然后使用驱逐,但我不明白我将如何更改我当前的代码。

最佳答案

它非常简单,但我可以看到混淆,因为他们提供的所有示例都假设您正在使用 CacheLoader 来填充缓存,如果您之前使用的是 Map,则不会。

所以,给出的例子是:

 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);
}
});

您是直接插入到 map 中,而不是使用加载程序,因此删除加载部分:

 Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.removalListener(MY_LISTENER)
.build();

删除项目时不需要通知吗?

 Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.build();

不想要固定大小的缓存,并且只想按时限制它?

 Cache<Key, Graph> graphs = CacheBuilder.newBuilder()
.expireAfterWrite(10, TimeUnit.MINUTES)
.build();

你说你想要 2 小时,你的版本是 String,String,所以...

 Cache<String, String> graphs = CacheBuilder.newBuilder()
.expireAfterWrite(2, TimeUnit.HOURS)
.build();

关于java - 如何将 HashMap 转换为可缓存的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19008049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com