[Java] Stream flatMap()

해니·2025년 9월 1일
0

Java

목록 보기
33/34
post-thumbnail



🔧 개발사항 🔩
: Dto 내에 List<Object> 타입의 멤버 변수를 추출해야 되는 상황에서 중첩 for문 사용을 지양하고자 방법을 찾아보면서 StreamflatMap() 메서드를 알게 되었다.



Stream.flatMap() 메서드

  • map() 메서드처럼 각 요소에 함수를 적용하여 새로운 요소로 변환시킨다.
  • 생성된 여러 스트림을 하나의 스트림으로 평탄화(flatten)한다.
    • Stream<List<T>> ➡️ Stream<T> 변환 (즉, 중첩된 구조를 평탄화)



사용 예제 코드

@Data
class OrderDto {

  private long orderSeq;

  private String customerName;

  private List<OrderItemDto> items;

}


// 테스트 데이터 생성
List<OrderDto> orders = createSampleData();


// 모든 아이템 평면화하여 가져오기
List<OrderItemDto> allItems = orders.stream()
              .flatMap(order -> order.getItems().stream())
              .collect(Collectors.toList());


//특정 가격 이상의 아이템들만 추출
List<OrderItemDto> expensiveItems = orders.stream()
              .flatMap(order -> order.getItems().stream())
              .filter(item -> item.getPrice() >= 50)
              .collect(Collectors.toList());






출처

Stream API - map과 flatMap

profile
💻 ⚾️ 🐻

0개의 댓글