【问题标题】:Combine two Maps into a MultiMap将两个 Map 组合成一个 MultiMap
【发布时间】:2012-02-17 06:59:04
【问题描述】:

在 Java 中将两个 Map 组合成一个 Guava MultiMap 的最佳方法是什么?

例如:

  • Map1 包含 (1, a) 和 (2, b)
  • Map2 包含 (2, c) 和 (3, d)

那么生成的组合多图将包含

  • (1, {a})、(2, {b, c}) 和 (3, {d})

这是我目前的解决方案:

Multimap<T, K> combineMaps(Map<T, K> map1, Map<T, K> map2) {
    Multimap<T, K> multimap = new MultiMap();
    for (final Map.Entry<T, K> entry : map1.entrySet()) {
        multimap.put(entry.getKey(), entry.getValue());
    }
    for (final Map.Entry<T, K> entry : map2.entrySet()) {
        multimap.put(entry.getKey(), entry.getValue());
    }
    return multimap;
}

【问题讨论】:

  • 嗯,通常没有最好的方法,而你的方法对我来说似乎是明智的。你有什么问题吗?如果没有,我会坚持下去(除了我也会将泛型添加到new MultiMap() :))。

标签: java guava multimap


【解决方案1】:

...这些是什么类型的多图?它们是来自 Guava 还是其他图书馆?

在番石榴中,你可以这样做

multimap.putAll(Multimaps.forMap(map1));
multimap.putAll(Multimaps.forMap(map2));

【讨论】:

  • 他们确实是番石榴,这就是我要找的。这次我的谷歌技能似乎让我失望了。谢谢
【解决方案2】:

您的解决方案看起来不错。你可以这样初始化:

Multimap<T, K> multimap = new MultiMap(map1);

然后只遍历第二张地图,但是复杂度/速度是一样的。

【讨论】:

    猜你喜欢
    • 2019-01-02
    • 2021-08-19
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多