더북(TheBook)

이제 HashSet에 결과들을 모으려 한다고 하자. HashSet 객체는 스레드에 안전하지 않기 때문에, 컬렉션을 병렬화하면 요소들을 단일 HashSet에 직접 넣을 수 없다. 이와 같은 이유로 reduce를 사용할 수 없다. 각 부분은 자체적인 빈 해시 집합으로 작업을 시작해야 하는데, reduce는 항등값 하나만 전달하도록 허용한다. 따라서 reduce 대신 collect를 사용해야 한다. collect는 세 가지 인자를 받는다.

1. 공급자 supplier : 대상 객체의 새로운 인스턴스를 만든다(예를 들면, HashSet 생성자).

2. 누산자 accumulator : 요소를 대상에 추가한다(예를 들면, add 메서드).

3. 결합자 combiner : 두 객체를 하나로 병합한다(예를 들면, addAll 메서드).

 

<Note>

대상 객체가 컬렉션일 필요는 없다. StringBuilder나 카운트와 합계를 관리하는 객체라면 대상이 될 수 있다.

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