就像我们现在一样,有 BiMap 和 multiMap 的概念,但是有 multiBiMap 吗?所以我的意思是什么。在 multiMap 中,K 和 V 之间存在一对多关系,单个键可以关联到多个值,因此得名。在双地图中,您有 K,V 对,这是双向的,这意味着您也可以获得 V,K 关系。就像有两个常规地图但同步。我需要一个双向多图,您可以在其中结合这两个概念。
问问题
3851 次
1 回答
15
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;
}
}
于 2013-12-05T07:18:10.623 回答