将两张地图合并为多地图

2022-09-04 00:57:09

在Java中将两个Map组合成单个番石榴多地图的最佳方法是什么?

例如:

  • 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;
}

答案 1

...这些是什么样的多地图?它们来自番石榴还是其他图书馆?

在番石榴,你可以做

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

答案 2

您的解决方案看起来很好。您可以像这样初始化:

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

然后只循环访问第二个映射,但是复杂性/速度是相同的。


推荐