现在,我们有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; } }