더북(TheBook)

09 Stream<ArrayList<T>>에 있는 모든 요소들을 ArrayList<T> 하나로 결합하라. reduce의 세 가지 형태를 이용해 이 작업을 수행하는 방법을 보여라.

10 Stream<Double>의 평균을 계산하는 데 사용할 수 있는 reduce 호출을 작성하라. 단순히 합계를 계산해 count()로 나눌 수 없는 이유는 무엇인가?

11 단일 ArrayList를 스트림의 크기로 생성했다면, 여러 ArrayList를 병합하는 대신 단일 리스트 안에 스트림 결과들을 동시에 모을 수 있어야 한다. 이는 떨어진 위치에서 병행 set 연산은 스레드에 안전하기 때문이다. 이 작업을 어떻게 할 수 있는가?

12 “2.13 병렬 스트림” 절에서 설명한 것처럼 AtomicInteger 배열을 업데이트하는 방법으로 병렬 Stream<String>에 있는 모든 짧은 단어의 개수를 세라. 각 카운터를 안전하게 증가시키기 위해 원자적 메서드인 getAndIncrement를 사용한다.

13 연습문제 12를 다시 풀되, 이번에는 짧은 문자열을 걸러내고 collect 메서드를 Collectors.groupingBy, Collectors.counting과 조합해 사용하라.

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