수업이 있습니다.
public class Customer{
private List<Order> orders;
private String name;
...
}
public class Order{
private long orderId;
private String customerId;
private double amount;
...
}
public class CustomerService{
@Autowired
private CustomerRepository customerRepo;
List<Customer> custList = customerRepo.findAllCustomers();
double amount = custList.stream().map(c -> {
return c.getOrders().stream().mapToDouble(o -> o.getAmount()).sum()}).findAny().get();
}
그래서 CustomerService에서 위와 같이 시도했습니다. 그러나 반환 된 금액은 목록의 첫 번째 항목에만 해당됩니다. 같은 방식으로 해당 고객에 대한 모든 주문의 총액을 얻으려면 어떻게 쓸 수 있습니까?
모든 제안 / 입력이 도움이 될 것입니다.
참고 : 컴파일 오류로 인해 죄송합니다. 내 코드를 복사 할 수 없으므로 대신 질문을 작성해야합니다.
다음을 사용합니다 flatMap()
.
double total = custList.stream()
.flatMap(c -> c.getOrders().stream())
.mapToDouble(Order::getAmount)
.sum();
또한 주문에서 금액을 얻기 위해 메서드 참조 를 사용 합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다