如何使用 Java 流 api 从列表列表中添加总量?

How to add total amount from list of lists using Java stream api?

我有一个 class:

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 中像上面那样尝试了。但返回的金额仅适用于列表中的第一项。那么以同样的方式,我该如何写才能获得该客户所有订单的总金额?

任何 suggestions/input 都会有所帮助。

注意:对于任何编译错误,我们深表歉意。我无法复制我的代码,所以我需要写在问题中。

您使用flatMap():

double total = custList.stream()
        .flatMap(c -> c.getOrders().stream())
        .mapToDouble(Order::getAmount)
        .sum();

另请注意使用方法参考从订单中获取金额。