DolphaGo / TIL

TIL & issues
0 stars 1 forks source link

[Java] Collectors.toMap 은 Null value에 대해서 NPE가 터진다. #93

Open DolphaGo opened 2 years ago

DolphaGo commented 2 years ago

toMap은 다음 메서드로 매핑을 하게 된다.

image

여기서 value를 보면 requireNonNull인 것을 알 수 있는데, 여기에서 NPE가 터진다.

image

물론, map의 value에는 nul을 넣을 수 있다.

    @Test
    void test() {
        Map<String, String> map = new HashMap<>();
        map.put("test", null);
        System.out.println("map.get(\"test\") = " + map.get("test")); // null 출력
    }

만약 Value가 null인 상황에서도 매핑해야 하는 경우에는 어떻게 해야 할까? Stream으로 모아주고 싶지만 List -> Map을 매핑하는데 Value가 null일 때는 다음과 같이 하면 된다.

 .collect(HashMap::new, (m, v) -> m.put(v.getKey(), v.getValue()), HashMap::putAll);
DolphaGo commented 2 years ago

https://stackoverflow.com/questions/24630963/nullpointerexception-in-collectors-tomap-with-null-entry-values