我正在做一个购物项目。目前我有Shoppingcart
的地图,其中包含shoppingcart和数量。我必须迭代OrderlineDtolist
并将它们添加到ShoppingcartMap
。我已经尝试并实现了它,但我不确定这是最好的。如果还有其他方法,请告诉我。
以下是我的代码片段。如果有更好的方法,请告诉我。
orderLineDTOList.stream().forEach((orderLineDTO) -> {
if (orderLineDTO != null && orderLineDTO.getTempQuantity() != null && orderLineDTO.getTempQuantity() > 0) {
if (shoppingCartItemMap.containsKey(orderLineDTO.getProduct().getProductCode())) {
shoppingCartItem = shoppingCartItemMap.get(orderLineDTO.getProduct().getProductCode());
shoppingCartItem.setQuantity(orderLineDTO.getTempQuantity());
} else {
shoppingCartItem = new ShoppingCartItem(orderLineDTO.getProduct(), orderLineDTO.getTempQuantity());
}
getSession().getShoppingCartItemMap().put(orderLineDTO.getProduct().getProductCode(), shoppingCartItem);
}
});
答案 0 :(得分:2)
Java-8没有提供任何可以替换IsEnabled
语句的新特定构造。不过,您可以使用if
和Stream.filter
等新方法来提高可读性:
Map.computeIfAbsent
我认为orderLineDTOList.stream()
.filter(orderLineDTO -> orderLineDTO != null &&
orderLineDTO.getTempQuantity() != null && orderLineDTO.getTempQuantity() > 0)
.forEach((orderLineDTO) ->
shoppingCartItemMap.computeIfAbsent(orderLineDTO.getProduct().getProductCode(),
code -> new ShoppingCartItem(orderLineDTO.getProduct(), 0)
).setQuantity(orderLineDTO.getTempQuantity()));
与getSession().getShoppingCartItemMap()
相同。