728x90
Java 8의 Stream API를 사용할 때, 데이터를 그룹핑하려면 Collectors.groupingBy()
를 자주 사용하게 된다.
예제를 통해 한 번 정리해보자.
1. 단일 Key로 그룹핑
Map<String, List<SalesCollectViewVo>> groupedByTmId =
list.stream().collect(Collectors.groupingBy(SalesCollectViewVo::getTmId));
System.out.println(groupedByTmId);
→ getTmId()
값을 기준으로 list
를 그룹핑해서 Map으로 만든다.
즉, 동일한 tmId
값을 가진 객체들끼리 묶이게 된다.
2. 복합 Key로 그룹핑 (Tuple 사용)
Map<Tuple, List<BlogPost>> postsPerTypeAndAuthor =
posts.stream()
.collect(Collectors.groupingBy(post -> new Tuple(post.getType(), post.getAuthor())));
→ 여러 개의 필드를 묶어서 그룹핑을 하고 싶을 때는 Tuple
과 같은 커스텀 Key 객체를 사용한다.
위 코드는 type
과 author
값을 묶어 하나의 키로 보고 그룹핑한다.
한 줄 요약
groupingBy()
는 데이터를 특정 기준으로 Map 형태로 묶어주는 Stream API 기능- 단일 필드뿐 아니라, 여러 필드를 조합해서도 그룹핑이 가능 (복합 키 사용)
728x90
반응형