今天项目中有个查询库存操作,调用同事接口返回的结果转成map后键有重复,然后就研究了一下
stream转map后如何控制合并, 查看Collectors.toMap()后发现里面有一个mergeFunction,
然后我就做了如下的操作,记录一下
List<AdvanceStockOutDistributionDetailVO> list = Optional.ofNullable(result.getModels()).orElse(new ArrayList<>());
list.stream().collect(Collectors.toMap(AdvanceStockOutDistributionDetailVO::getProductId, AdvanceStockOutDistributionDetailVO::getDeliveryStockQuantity, (deliveryStockQuantity, oldDeliveryStockQuantity) -> {
oldDeliveryStockQuantity = deliveryStockQuantity.add(oldDeliveryStockQuantity);
return oldDeliveryStockQuantity;
}));
最后需要返回第二个参数,大功告成!