如何在java8中迭代时有效检查else条件?

时间:2016-03-11 12:51:11

标签: java-8

我正在做一个购物项目。目前我有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);
        }
    });

1 个答案:

答案 0 :(得分:2)

Java-8没有提供任何可以替换IsEnabled语句的新特定构造。不过,您可以使用ifStream.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()相同。