Java 将两个贴图合并为多贴图

Java 将两个贴图合并为多贴图,java,guava,multimap,Java,Guava,Multimap,在Java中,将两个地图组合成单个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

在Java中,将两个地图组合成单个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;
}
多地图组合地图(地图地图1、地图地图地图2){
Multimap Multimap=新的Multimap();
对于(最终的Map.Entry:map1.entrySet()){
multimap.put(entry.getKey(),entry.getValue());
}
对于(最终的Map.Entry:map2.entrySet()){
multimap.put(entry.getKey(),entry.getValue());
}
返回多重映射;
}

…这些是什么类型的多重贴图?他们是从番石榴还是其他图书馆来的

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

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

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

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

然后只遍历第二个映射,但是复杂度/速度是一样的。

通常没有最好的方法,我觉得你的方法很合理。你对此有什么问题吗?如果没有,我就坚持使用它(除了我会将泛型添加到
new MultiMap()
too:)。它们确实是番石榴,这就是我一直在寻找的。这次我的谷歌技能似乎让我失望了。谢谢