더북(TheBook)

하지만 특정 국가에서 사용하는 모든 언어를 알고 싶다고 하자. 이 경우 Map<String, Set<String>>이 필요하다. 예를 들면, "Switzerland"에 해당하는 집합은 [French, German, Italian]이다. 먼저, 각 언어에 해당하는 싱글톤singleton 집합을 마련한다. 그런 다음 주어진 국가에서 새로운 언어를 발견할 때마다 기존 집합과 새 집합의 합집합union을 만든다.


Map<String, Set<String>> countryLanguageSets = locales.collect(

Collectors.toMap(

l -> l.getDisplayCountry(),

l -> Collections.singleton(l.getDisplayLanguage()),

(a, b) -> { // a와 b의 합집합

Set<String> r = new HashSet<>(a);

r.addAll(b);

return r; }));


 

다음 절에서 이러한 맵을 얻는 더 간단한 방법을 알아본다.

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