一、問題說明
如果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);
}
參考鏈接: