🔧 개발사항 🔩
:Dto내에List<Object>타입의 멤버 변수를 추출해야 되는 상황에서 중첩for문 사용을 지양하고자 방법을 찾아보면서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());