본문 바로가기

JAVA

Java Stream으로 그룹핑하기 – groupingBy() 정리

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 객체를 사용한다.
위 코드는 typeauthor 값을 묶어 하나의 키로 보고 그룹핑한다.


 한 줄 요약

  • groupingBy()는 데이터를 특정 기준으로 Map 형태로 묶어주는 Stream API 기능
  • 단일 필드뿐 아니라, 여러 필드를 조합해서도 그룹핑이 가능 (복합 키 사용) 
728x90
반응형