Java 如何通过键连接两个hashMap

Java 如何通过键连接两个hashMap,java,map,hashmap,Java,Map,Hashmap,我有两个HashMap。我需要通过它们的键连接这两个hashMap Map<String, String> firstMap = new HashMap<String, String>(); Map<String, String> secondMap = new HashMap<String, String>(); firstMap= [{K1,V1},{K2,V2}] secondMap= [{K2,V2},{K3,V3}] 请帮帮我。谢谢 f

我有两个HashMap。我需要通过它们的键连接这两个hashMap

Map<String, String> firstMap = new HashMap<String, String>();
Map<String, String> secondMap = new HashMap<String, String>();
firstMap= [{K1,V1},{K2,V2}]
secondMap= [{K2,V2},{K3,V3}]
请帮帮我。谢谢

firstMap.keySet().retainAll(secondMap.keySet());
这假定允许您更改firstMap。如果没有,请先复印一份:

Map<String, String> thirdMap = new HashMap<>(firstMap);

此代码应满足您的需要:

Map<String, String> thirdMap = new HashMap<String, String>();

for (String key : firstMap.keySet()) {
    if (secondMap.containsKey(key)) {
        thirdMap.put(key, firstMap.get(key));
    }
}
Map thirdMap=newhashmap();
for(字符串键:firstMap.keySet()){
if(第二地图容器(键)){
thirdMap.put(key,firstMap.get(key));
}
}

Google Guava library有一个实用程序,可以提供两个地图之间的差异

MapDifference<String, String> diff = Maps.difference(map1, map2);
MapDifference diff=Maps.difference(map1,map2);
执行以下操作:

Map<String, String> firstMap = new HashMap<>();
Map<String, String> secondMap = new HashMap<>();
Map<String, String> join = new HashMap<>();

for (Entry<String, String> entry : firstMap.entrySet())
    if (secondMap.containsKey(entry.getKey())) {
        String value = secondMap.get(entry.getKey());
        if (value.equals(entry.getValue())) {
            join.put(entry.getKey(), value);
        }
    }
}
Map firstMap=newhashmap();
Map secondMap=newhashmap();
Map join=newhashmap();
for(条目:firstMap.entrySet())
if(secondMap.containsKey(entry.getKey())){
String value=secondMap.get(entry.getKey());
if(value.equals(entry.getValue())){
join.put(entry.getKey(),value);
}
}
}
Map firstMap=newhashmap(); Map secondMap=newhashmap()


请注意,此答案还确保值相等,而不仅仅是键。这就是你想要的吗?不,我只需要钥匙是一样的。值可以是不同的。这在最终地图中以
K1
K3
结束,这不是OP想要的。事实上,我不确定我在想什么。我以为他想像标题上说的那样加入他们。:)
MapDifference<String, String> diff = Maps.difference(map1, map2);
Map<String, String> firstMap = new HashMap<>();
Map<String, String> secondMap = new HashMap<>();
Map<String, String> join = new HashMap<>();

for (Entry<String, String> entry : firstMap.entrySet())
    if (secondMap.containsKey(entry.getKey())) {
        String value = secondMap.get(entry.getKey());
        if (value.equals(entry.getValue())) {
            join.put(entry.getKey(), value);
        }
    }
}
 // Add everything in firstMap 
    map2.putAll(Maps.difference(firstMap , secondMap ).entriesOnlyOnLeft());