一、问题说明
如果Map中有个键值对的value为null,在调用Collectors.toMap时会报NullPointerException
代码如下:
public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("aaa", "111"); map.put("bbb", "222"); map.put("ccc", null); Map<String, String> resultMap; resultMap = map.entrySet().stream().collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue())); System.out.println(resultMap); }
二、问题解决
源码中可以看到,明确要求value不能为null
解决思路:当value为null时,更换成""就行了
将上面的代码修改成:
public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("aaa", "111"); map.put("bbb", "222"); map.put("ccc", null); Map<String, String> resultMap; resultMap = map.entrySet().stream().collect(Collectors.toMap(entry -> entry.getKey(), entry -> Optional.ofNullable(entry.getValue()).orElse(""))); System.out.println(resultMap); }
参考链接:
https://blog.csdn.net/wysnxzm/article/details/81260073
https://blog.csdn.net/qq_40223688/article/details/104264461