더북(TheBook)

“2.10 맵으로 모으기” 절에서 설명한 것처럼, 맵을 병합하는 일은 비용이 많이 든다. 이 때문에 Collectors.groupingByConcurrent 메서드는 공유되는 병행 맵을 사용한다. 분명히 병렬화의 이점을 얻기 위해 맵 값들의 순서는 스트림 순서와 달라질 것이다. 이 컬렉터는 심지어 순서 유지 스트림에서도 순서를 유지하지 않는 ‘성질’이 있다. 따라서 스트림이 순서를 유지하지 않게 만들 필요 없이도 효율적으로 사용할 수 있다. 그럼에도 여전히 스트림을 병렬로 만들어야 한다.


Map<String, List<String>> result = cities.parallel().collect(

Collectors.groupingByConcurrent(City::getState));

// 값들이 스트림 순서로 모이지 않는다.


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.