繁体   English   中英

我们有 MultiBiMap 吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM