•
Order
package com.stream;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.List;
@Data
@AllArgsConstructor
public class Order {
    private List<Product> products;
}
Java
복사
•
Product
package com.stream;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class Product {
    private String name;
}
Java
복사
•
User
package com.stream;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class Product {
    private String name;
}
Java
복사
•
PracticeExample
package com.stream;
import java.util.Arrays;
import java.util.List;
public class PracticeExample {
    public static void main(String[] args) {
        // 샘플 상품들...
        Product mic = new Product("마이크");
        Product headSet = new Product("헤드셋");
        Product earPhone = new Product("이어폰");
        Product speaker = new Product("스피커");
        Product iPad = new Product("아이패드");
        Product monblancPen = new Product("몽블랑 펜");
        Product rolexWatch = new Product("롤렉스 시계");
        Product dubaiChoco = new Product("두바이 초콜릿");
        Product car = new Product("자동차");
        // 샘플데이터 만들기
        List<User> users = Arrays.asList(
            new User("민니", Arrays.asList(
                    new Order(Arrays.asList(mic, headSet, earPhone, speaker)),
                    new Order(Arrays.asList(iPad)),
                    new Order(Arrays.asList(monblancPen))
            )),
            new User("우기", Arrays.asList(
                    new Order(Arrays.asList(rolexWatch, dubaiChoco)),
                    new Order(Arrays.asList(car))
            ))
        );
        // Stream<User>를 생성
        // -> flatMap으로 Stream<Order> 변환
        // -> flatMap으로 Stream<Product>로 변환
        // -> 각 상품이름을 출력
       users.stream()
               .flatMap(user -> user.getOrders().stream())
               .flatMap(order -> order.getProducts().stream())
               .distinct()
               .filter(product -> product.getName().length() > 3)
               .forEach(product -> System.out.println(product.getName()));
//               .forEach(product -> System.out.println(product));
    }
}
Java
복사

