Backend
home
📝

stream 예제 코드 1

생성일
2025/01/22 10:39
태그
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
복사