[英]Do we have a MultiBiMap ?
正如我们现在,有 BiMap 和 multiMap 的概念,但是有 multiBiMap 吗? 所以我是什么意思。 在 multiMap 中,K 和 V 之间存在一对多关系,单个键可以关联多个值,因此得名。 在双映射中,您有 K,V 对,它是双向的,这意味着您也可以获得 V,K 关系。 就像有两个常规地图但同步。 我需要一个双向多地图,您可以将这两个概念结合起来。
import java.util.Set;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.SetMultimap;
public class ManyToMany<K, V> {
private final SetMultimap<K, V> keysToValues = HashMultimap.create();
private final SetMultimap<V, K> valuesToKeys = HashMultimap.create();
public Set<V> getValues(K key) {
return keysToValues.get(key);
}
public Set<K> getKeys(V value) {
return valuesToKeys.get(value);
}
public boolean put(K key, V value) {
return keysToValues.put(key, value) && valuesToKeys.put(value, key);
}
public boolean putAll(K key, Iterable<? extends V> values) {
boolean changed = false;
for (V value : values) {
changed |= put(key, value);
}
return changed;
}
}
我在这里创建了一个: https : //github.com/meghneelgore/ImmutableMultiBimap
这是一个不可变的MultiBimap,具有用于Hash和Tree映射的实现。 我自己使用它,但它是开源的,供所有人使用。 请使用它,让我知道您的想法!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.