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());