더북(TheBook)

TreeMap을 원하는 경우, 네 번째 인자로 TreeMap 생성자를 전달한다. 이때 반드시 병합 함수merge function를 제공해야 한다. 다음은 이 절의 시작 부분에 있는 예제 중 하나를 TreeMap을 돌려주도록 변경한 것이다.


Map<Integer, Person> idToPerson = people.collect(

Collectors.toMap(

Person::getId,

Function.identity(),

(existingValue, newValue)

-> { throw new IllegalStateException(); },

TreeMap::new));


 

<Note>

toMap 메서드의 각 형태에 대응해 병행 맵을 리턴하는 toConcurrentMap 메서드가 있다. 병렬 컬렉션 처리에서는 병행 맵 하나를 사용한다. 병렬 스트림과 함께 사용하면 공유 맵 하나가 여러 맵을 병합하는 방법보다 효율적이다. 물론 이 경우 정렬은 포기해야 한다.

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