如果集合包含给定键的指定值,我想更新地图。如果不是,请更新该设置(如果该值可缓存)。
我的实现如下。它是线程安全的吗?
Map<String, Set<String>> cache = new ConcurrentHashMap<>();
// Only this method will change the map
boolean checkValue(String key, String value) {
final Set<String> values = cache.get(key);
if (values != null) {
if (values.contains(value)) {
return true;
}
}
if (isCacheable(value)) {
cache.computeIfAbsent(key,
k -> Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>()))
.add(value);
return true;
}
return false;
}