Java 如何仅在密钥不存在时组合两个哈希映射?

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

我正在用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<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吗?