使用Stream获取列表的总和



我有一个LineItem列表。我想要的是通过lineItemId过滤列表,并获得过滤元素和过滤列表的数量之和。

public class LineItem {
private Item item;
private int quantity;
private String lineItemId;
}

我写的代码像这个

purchases.stream()
.map(purchaseItem -> identifyAndGetLineItem(purchaseItem,awardPointsForSaleRequest.getLineItems()))
.filter(lineItem -> lineItem.getQuantity() > 0)
.collect(Collectors.toMap())

基本上,我想要一个Map,一个键将包含过滤列表的值,另一个键包含过滤列表的数量总和

不可能将数据类型List和Integer sum都存储在一个映射中。但你们可以做下面这样的事情,当从地图中检索数据时,你们可以打字。

List<LineItem> lineItemList = lineItems.stream()
.filter(lineItem -> lineItem.getLineItemId() == "filter data")
.collect(Collectors.toList());
Integer sum = lineItemList.stream().map(LineItem::getQuantity).reduce(0, Integer::sum);
Map<String, Object> list = Map.of("list", lineItemList, "sum", sum);

最新更新