jdk8 Collectors.toMap中的value为null时报NullPointerException

一、问题说明

如果Map中有个键值对的value为null,在调用Collectors.toMap时会报NullPointerException

代码如下:

public static void main(String[] args) {
	Map map = new HashMap<>();
	map.put("aaa", "111");
	map.put("bbb", "222");
	map.put("ccc", null);

	Map resultMap;
	resultMap = map.entrySet().stream().collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue()));
	System.out.println(resultMap);
}

 

二、问题解决

源码中可以看到,明确要求value不能为null

jdk8 Collectors.toMap中的value为null时报NullPointerException_第1张图片

解决思路:当value为null时,更换成""就行了

将上面的代码修改成:

public static void main(String[] args) {
	Map map = new HashMap<>();
	map.put("aaa", "111");
	map.put("bbb", "222");
	map.put("ccc", null);

	Map 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

你可能感兴趣的:(java)