상황
데이터를 grouping 해서 Map으로 리턴해야 하는 상황이다.
grouping할 key 값이 nullable한 상황인데,
Map의 key값은 null이 될 수 없기때문에 문제가 발생했다.
아래와 같은 exception을 뱉었다.
Caused by: java.lang.NullPointerException: element cannot be mapped to a null key
🫥참고로, 만약 그룹핑할 key가 절대로 null이 아니라면 아래와 같이 간단하게 처리할 수 있다.
Map<String, List<ResponseDto>> map = list.stream().map(li ->
new ResponseDto(li)
).collect(Collectors.groupingBy(ResponseDto::getCode));
해결
✔️Null값이 있는 GroupBy Key!
Map<String, List<ResponseDto>> responseList = list.stream().map(ResponseDto::new)
.collect(Collectors.toMap( // flag가 nullable -> Collectors.groupingBy 쓰면 에러 뱉음.
response -> response.getFlag() == null ? "F" : response.getFlag(), // key가 null이면 "F"를 넣어줌
fList -> { //list 수만큼 반복
List<ResponseDto> list = new ArrayList<>();
list.add(fList);
return list;
},
(oldList, newList) -> { // key 중복 처리
oldList.addAll(newList);
return oldList;
},
HashMap::new));
'Back > Java' 카테고리의 다른 글
[JAVA][시큐어코딩] Null Pointer 역참조에 대응하기 (0) | 2024.08.01 |
---|---|
[JAVA] 파일 관련 Stream, I/O 성능 개선 (File 복사 기능) (2) | 2024.07.24 |
[Java] Stream 스트림으로 중복 값 찾기 (0) | 2023.02.22 |
[Java] Optional 개념, 사용법 (1) | 2023.02.21 |
[JAVA] Reflection 이용해서 필드값 set 하기 (0) | 2022.04.11 |
댓글