gpt4 book ai didi

java - 比较两个散列图值与键

转载 作者:搜寻专家 更新时间:2023-11-01 01:26:54 24 4
gpt4 key购买 nike

我有两个HashMaps

HashMap<String, String> hMap=new HashMap<String, String>();
hMap.put("1","one");
hMap.put("2", "two");
hMap.put("3", "three");
hMap.put("4", "four");

HashMap<String, String> hMap2=new HashMap<String, String>();
hMap2.put("one", "");
hMap2.put("two", "");

我想比较 hMap2 和 hMap 的键,这两个键不相等,我需要将它放在另一个 hashMap 中。为此,我尝试了类似的方法。

HashMap<String, String> hMap3=new HashMap<String, String>();
Set<String> set1=hMap.keySet();
Set<String> set2=hMap2.keySet();

Iterator<String> iter1=set1.iterator();
Iterator<String> iter2=set2.iterator();
String val="";
while(iter1.hasNext()) {

val=iter1.next();
System.out.println("key and value in hmap is "+val+" "+hMap.get(val));

iter2=set2.iterator();

while(iter2.hasNext()) {
String val2=iter2.next();
System.out.println("val2 value is "+val2);

if(!hMap.get(val).equals(val2)) {
hMap3.put(val, hMap.get(val));
System.out.println("value adding");

}
}
}
System.out.println("hashmap3 is "+hMap3);

我得到的输出是

hashmap3 is {3=three, 2=two, 1=one, 4=four}

我的预期输出是

hashmap3 is {3=three, 4=four}

请纠正我的逻辑。提前致谢

最佳答案

你真的让你的任务复杂化了。您根本不需要遍历第二张 map 。您可以使用 Map#containsKey()检查第一个映射中的值是否是第二个映射中的键的方法。

因此,您只需要迭代第一张 map 。由于您需要键和值,您可以迭代第一个 map 的 Map.Entry。你可以使用 Map#entrySet() 得到它.

由于第一个映射的值是第二个映射的键,因此您需要在 Map.Entry#getValue() 上使用 containsKey 方法方法:

for (Entry<String, String> entry: hMap.entrySet()) {
// Check if the current value is a key in the 2nd map
if (!hMap2.containsKey(entry.getValue()) {

// hMap2 doesn't have the key for this value. Add key-value in new map.
hMap3.put(entry.getKey(), entry.getValue());
}
}

关于java - 比较两个散列图值与键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18546211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com