jdk8 Collectors.toMap中的value爲null時報NullPointerException

一、問題說明

如果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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章