12.2. MultimapCache API
MultimapCache API 公开几种方法与多映射缓存交互。在大多数情况下,这些方法是非阻塞的方法;如需更多信息,请参阅 限制。
public interface MultimapCache<K, V> { CompletableFuture<Optional<CacheEntry<K, Collection<V>>>> getEntry(K key); CompletableFuture<Void> remove(SerializablePredicate<? super V> p); CompletableFuture<Void> put(K key, V value); CompletableFuture<Collection<V>> get(K key); CompletableFuture<Boolean> remove(K key); CompletableFuture<Boolean> remove(K key, V value); CompletableFuture<Void> remove(Predicate<? super V> p); CompletableFuture<Boolean> containsKey(K key); CompletableFuture<Boolean> containsValue(V value); CompletableFuture<Boolean> containsEntry(K key, V value); CompletableFuture<Long> size(); boolean supportsDuplicates(); }
CompletableFuture<Void> put (K key, V value)
将键值对放在多映射缓存中。
MultimapCache<String, String> multimapCache = ...; multimapCache.put("girlNames", "marie") .thenCompose(r1 -> multimapCache.put("girlNames", "oihana")) .thenCompose(r3 -> multimapCache.get("girlNames")) .thenAccept(names -> { if(names.contains("marie")) System.out.println("Marie is a girl name"); if(names.contains("oihana")) System.out.println("Oihana is a girl name"); });
这个代码的输出如下:
Marie is a girl name Oihana is a girl name
CompletableFuture<Collection<V>> get (K key)
异步返回与此多映射缓存中与键关联的值的视图集合(若有)。对检索到的集合的任何更改都不会更改此多映射缓存中的值。当此方法返回空集合时,这意味着未找到密钥。
CompletableFuture<Boolean> remove (K key)
异步从多映射缓存中删除与密钥关联的条目(如果存在)。
CompletableFuture<Boolean> remove (K key, V value)
异步从多映射缓存中删除键值对(如果存在的话)。
CompletableFuture<Void> remove (Predicate<? super V> p)
异步方法。删除与给定 predicate 匹配的每个值。
CompletableFuture<Boolean> containsKey (K key)
如果此多映射包含密钥,则返回 true 的异步。
CompletableFuture<Boolean> 包含Value (V 值)
如果此多映射在至少一个键中包含值,则返回 true 的异步。
CompletableFuture<Boolean> 包含Entry (K key, V value)
如果此多映射至少包含一个键值对,则返回 true。
CompletableFuture<Long> size()
异步返回多映射缓存中键值对数。它不会返回不同的键数。
布尔值 supportsDuplicates ()
如果多映射缓存支持重复,则返回 true 的异步。这意味着 multimap 的内容可以是 'a'