Language/Java

[Java] Stream

한비Skyla 2024. 6. 17. 19:12

람다를 이용해서 

스트림 파이프라인 

1) 스트림의 생성. 스트림 인스턴스 생성. stream()

2) 중간 연산. 필터링, 맴핑, 등등 원하는 결과를 만들어내는 과정. 

3) 최종 연산 

 

// 1. order에서 List<OrderCoffee> 를 가지고 와서
Set<OrderCoffee> orderCoffees = order.getOrderCoffees();
// 2. List<OrderCoffee>를 순회하며
 List<Coffee> coffeeList = new ArrayList<>();
 for(OrderCoffee orderCoffee: orderCoffees) {
     // 3. coffeeId 를 가지고 온 뒤,
     long currentCoffeeId = orderCoffee.getOrderCoffeeId();
     // 4. 해당 coffeeId 로 Coffee 객체를 찾은 후에
     Coffee currentCoffee = findVerifiedCoffee(currentCoffeeId);
     // 5. 해당 coffee 를 list 에 넣습니다.
     coffeeList.add(currentCoffee);
 }

 

                     // Order 에서 OrderCoffee 를 데리고 옴. 
                     // .stream() : 스트림을 쓰겠다. 
List<Coffee> coffees = order.getOrderCoffees().stream()
        // map을 쓰는데, orderCoffeeId라는 요소로 mapping 할 것이다. 
        // 이 요소는 .getCoffeeId() 로 Id를 데리고 온 Long 들을 가공하여 mapping 할 것.
        .map(orderCoffeeId -> orderCoffeeId.getCoffeeId())
        // coffee 라는 요소들의 이름으로 mapping 할 것이다. 
        // 이 요소는 findVerifiedCoffee() 로 coffeeId 를 coffee 객체로 바꾼 것.
        // 요소를 가공할 것이다.! 
        .map(coffee -> findVerifiedCoffee(coffee))
        .collect(Collectors.toList());

 

List<Coffee> coffeeList1 = order.getOrderCoffees().stream()
        // coffee 는 요소 이름 일 뿐이다. element.
        .map(coffee -> findVerifiedCoffee(coffee.getCoffeeId()))
        .collect(Collectors.toList());

'Language > Java' 카테고리의 다른 글

[Java] 멀티스레드, 멀티태스킹, 스레드  (1) 2025.04.20
[Java] Optional  (1) 2024.07.06
[Java] boolean , if문  (0) 2024.06.08
[Java] 기타 제어자  (1) 2024.06.08
[Java] 메소드 관계 파악  (0) 2024.06.07