•
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
복사