在Java中,合并两个Map可以使用putAll()方法,但是默认情况下,如果被合并的Map中有null值,它们会被丢弃。

如果想要保留null值,可以使用下面的代码:

public static  Map mergeMaps(Map map1, Map map2) {Map result = new HashMap(map1);for (Map.Entry entry : map2.entrySet()) {K key = entry.getKey();V value = entry.getValue();if (value != null) {result.put(key, value);} else if (!result.containsKey(key)) {result.put(key, null);}}return result;}

这里将两个Map合并成一个新的Map,如果被合并的Map中的value有null,会被保留在新的Map中。

示例:

Map map1 = new HashMap();map1.put("a", "1");map1.put("b", null);map1.put("c", "3");Map map2 = new HashMap();map2.put("b", "2");map2.put("c", null);map2.put("d", "4");Map result = mergeMaps(map1, map2);System.out.println(result); // {a=1, b=null, c=null, d=4}

输出结果中,被合并的Map中的value为null的键值对被保留了下来。