我正试图每天从番石榴缓存中删除一次值为-1的键。请就番石榴缓存中有助于实现这一目标的任何方法向我提出建议。
如果您不知道密钥,删除条目的唯一方法是在整个缓存上迭代,例如使用Cache#asMap()
视图和Map#removeIf(Predicate)
:
Cache<String, Integer> cache = CacheBuilder.newBuilder()
.build();
cache.putAll(ImmutableMap.of(
"one", 1,
"two", 2,
"something", -1,
"-", -1,
"forty-two", 42
));
System.out.println("Before: " + cache.asMap());
System.out.println(cache.getIfPresent("something"));
cache.asMap().entrySet().removeIf(e -> e.getValue().equals(-1));
System.out.println("After: " + cache.asMap());
System.out.println(cache.getIfPresent("something"));
输出:
Before: {something=-1, two=2, -=-1, one=1, forty-two=42}
-1
After: {two=2, one=1, forty-two=42}
null