[ Java8 ] Stream Collectors toMap 사용시 Duplicate Key Error
DB로부터 데이터를 가져와 List에 담고 List에 담긴 데이터를 MAP에 담아 처리하는 작업이다.
List to Map 시 Key 값이 중복일 경우 Duplicate Key에러 발생
2018:08:08 19:47:49.947 ERROR --- [http-nio-80-exec-24] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.util.concurrent.CompletionException: java.lang.IllegalStateException: Duplicate key 31356962-6f5b-4280-9beb-f48d4c437695] with root cause
java.lang.IllegalStateException: Duplicate key 31356962-6f5b-4280-9beb-f48d4c437695
at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)
at java.util.HashMap.merge(HashMap.java:1254)
[ 에러가 발생했던 코드 ]
CompletableFuture<List<Partner>> matchedList = cookieMatchingRepository.getMatchedPartnerUserIdByBid(bid);
Map<String, String> matchedPartnerMap =
matchedList.get().stream().collect(Collectors.toMap(Partner::getPartnerId, Partner::getPartnerUserId));
[ 동일한 KEY값이 들어와도 처음 KEY-VALUE 값으로 처리하는 코드 (노란 부분이 바뀜) ]
CompletableFuture<List<Partner>> matchedList = cookieMatchingRepository.getMatchedPartnerUserIdByBid(bid);
Map<String, String> matchedPartnerMap = matchedList.get().stream()
.collect(Collectors.toMap(Partner::getPartnerId, Partner::getPartnerUserId, (p1, p2) -> p1));
'Programming > Java,Spring' 카테고리의 다른 글
[ Java ] 자바 map byte사이즈 얻고 싶은 경우 (0) | 2018.10.29 |
---|---|
[ Java ] Stream + Set + flatMap (0) | 2018.10.29 |
[ SpringBoot] 스프링부트 순차적 방식과 비동기처리(asyn애노테이션), Completablefuture와 성능 비교 (0) | 2018.06.26 |
[ SpringBoot ] application.properties server.port이외에 추가 port 사용하기 (0) | 2018.02.27 |
[ Spring ] Stream 에러 - java.lang.IllegalStateException: stream has already been operated upon or closed (0) | 2018.02.21 |