微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Foreach 循环到流中

如何解决Foreach 循环到流中

关于移除 foreach 循环并将它们转换为流,我还有另一个问题。我将在这里发布整个方法,以防需要更多信息,而不仅仅是 foreach 循环。 我已经在尝试使用平面地图来做这件事,但它并没有解决我的问题。我希望你们中的一些人可以帮助我!我将不胜感激!

public void handlePickedOrders(final List<PickOrder> pickedOrders) {

        Contract.requires(pickedOrders != null,"illegal argument");

        // Your code goes here - if needed

        if (error) {
            new Scanner(system.in).nextLine();
        }

        if (!pickedOrders.isEmpty()) {
            Map<String,Integer> removedProducts = pickedOrders.stream()
                            .flatMap(n -> n.getPickOrderLines().stream())
                            .collect(Collectors.toMap(s -> s.getProductCode(),p -> p.getQuantity(),(a1,a2) -> a1 + a2));
            //Problem area
            for (Map.Entry<String,Integer> entry : removedProducts.entrySet()) {
                if (error) {
                    System.out.println("Remove " + entry.getValue() + " pieces of " + entry.getKey());
                }
                quantityOnHand.replace(entry.getKey(),quantityOnHand.get(entry.getKey()) - entry.getValue());
            }
            if (error) {
                System.out.println("Remove Pick Orders " + pickedOrders + " from Queue");
            }

            pickOrders.removeAll(pickedOrders);
            for (PickOrder pickOrder : pickOrders) {
                for (String productCode : removedProducts.keySet()) {
                    if (pickOrder.containsproduct(productCode)) {
                        pickOrder.calcReplenishmentsNeeded(quantityOnHand);
                        if (error) {
                            System.out.println("Recalculating: " + pickOrder);
                        }
                        break;
                    }
                }
            }
        }
    }

解决方法

虽然我没有得到确切的问题陈述,但您可以尝试这种可能正在寻找的嵌套 foreach 循环。 希望能帮到你。

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
        List<PickOrder> pickedOrders = Arrays.asList(
           new PickOrder("pc1",1000),new PickOrder("pc2",2000),new PickOrder("pc3",3000),new PickOrder("pc4",4000),new PickOrder("pc5",5000)
        );

        List<PickOrder> pickOrders = Arrays.asList(
                new PickOrder("pc6",6000),new PickOrder("pc7",7000),new PickOrder("pc8",8000)
        );

        Map<String,Integer> removedProducts = new HashMap<>();
        removedProducts.put("pc1",1000);
        removedProducts.put("pc2",2000);
        removedProducts.put("pc3",3000);

        pickOrders.forEach( pickOrder -> removedProducts.keySet().forEach(rp -> {
            if(pickOrder.getProductCode().equals(rp)) {
                //pickOrder.calcReplenishmentsNeeded(quantityOnHand);
                /*if (error) {
                    System.out.println("Recalculating: " + pickOrder);
                }*/
            }
        }));
    }

PickOrder.java

public class PickOrder {

    private String productCode;
    private int quantity;

    public PickOrder(String productCode,int quantity) {
        this.productCode = productCode;
        this.quantity = quantity;
    }

    public String getProductCode() {
        return productCode;
    }

    public void setProductCode(String productCode) {
        this.productCode = productCode;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }
}

谢谢 格达尔

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。