Java 如何仅在密钥不存在时组合两个哈希映射?
我正在用Java组合两个哈希映射。 我不希望hs2的值覆盖hs1中的值, 我只想在不在场的情况下合并Java 如何仅在密钥不存在时组合两个哈希映射?,java,Java,我正在用Java组合两个哈希映射。 我不希望hs2的值覆盖hs1中的值, 我只想在不在场的情况下合并 import java.util.HashMap; import java.util.Map.Entry; import java.util.stream.Collectors; import java.util.HashMap; public class Test { public static void main(String args[]) { HashMap
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import java.util.HashMap;
public class Test {
public static void main(String args[]) {
HashMap<Object,String> hs1 = new HashMap<>();
hs1.put(1, "ram");
hs1.put(2, "sita");
HashMap<Object,String> hs2 = new HashMap<>();
hs2.put(2, "test");
hs2.put(5, "fre");
HashMap<Object,String> hs3 = new HashMap<>() ;//Map is which we add
hs3.putAll(hs1);
hs3.putAll(hs2);
System.out.println(" hs3 : " + hs3);
}
}
预期结果:
{1=ram,5=fre,2=sita}
我不希望hs2覆盖hs1的值,我只想在不存在的情况下合并
在这种情况下,首先添加hs2的条目,然后添加hs1的条目:
我不希望hs2覆盖hs1的值,我只想在不存在的情况下合并
在这种情况下,首先添加hs2的条目,然后添加hs1的条目:
我认为最简单的方法是:
hs2.forEach(hs1::putIfAbsent);
我认为最简单的方法是:
hs2.forEach(hs1::putIfAbsent);
你说的联合收割机是什么意思?如果hs1.put2,则为sita;和hs1.put2,测试;存在,你的预期结果是什么?我几乎可以肯定你的预期输出不是你预期的。为什么两个对应于ram,你是说sita吗?对不起,我修改了我的预期结果你说的合并是什么意思?如果hs1.put2,则为sita;和hs1.put2,测试;存在,你的预期结果是什么?我几乎肯定你的预期输出不是你预期的。为什么两个对应于ram,你是说sita?对不起,我修改了我的预期结果。这不是修改hs1吗?这不是修改hs1吗?