小编典典

我们有一个MultiBiMap吗?

java

现在,我们有BiMap和multiMap的概念,但是有multiBiMap吗?所以这是什么意思。在multiMap中,K和V之间具有一对多的关系,单个键可以与多个值关联,因此也可以与名称关联。在双向映射中,您有K,V对,这是双向的,您也可以获取V,K关系。就像有两个常规地图,但已同步。我需要一个双向多地图,您可以将这两个概念结合在一起。


阅读 217

收藏
2020-11-01

共1个答案

小编典典

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;
    }
}
2020-11-01