我有下一节课:
public class Order {
private List<Element> elements;
}
public class Element {
private int size;
}
我需要使用Stream API创建一个方法,该方法返回顺序为keys
的Map,以及顺序中每个元素大小的总和为values
。
例如对于
List<Order> orders = new ArrayList<>();
orders.add(Order.createOrder(List.of(element1, element2, element3)));
orders.add(Order.createOrder(List.of(element3)));
我们应该得到:
{order1 = 75, order2 = 30}
因为element1 = 20, element2 = 25, element3 = 30
的size
我试过这样的方法:
private static Map<Order, Integer> calculate(List<Order> orders) {
return orders.stream()
.flatMap(o -> o.getElements().stream())
.mapToInt(el -> el.getSize())
.sum();
}
但这段代码计算的是所有元素的大小之和。我能在这里做什么?将感谢任何建议!
1条答案
按热度按时间huwehgph1#
其逻辑是:对于每个订单,对元素求和:
其给出:
如果你想要一个
Map<String,Integer>
,那么: