【问题标题】:Foreach loops into streamsForeach 循环进入流
【发布时间】:2021-02-28 08:05:55
【问题描述】:

我还有另一个问题是删除 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;
                    }
                }
            }
        }
    }

【问题讨论】:

  • 慢下来,从一个没有跟随你的冒险经历并且没有背景的人的角度重新阅读你的问题。还描述您的问题可能会有所帮助(错误消息?发生意外情况?)。之后仔细阅读How to Askedit 中的提示。
  • 对不起!上面的代码运行良好。我只需要将我的 foreach 循环变成流。没有错误或任何东西。我只需要将它们变成流。

标签: lambda foreach java-stream maps


【解决方案1】:

虽然我没有得到确切的问题陈述,但您可以尝试这种您可能正在寻找的嵌套 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;
    }
}

谢谢 格达尔

【讨论】:

    猜你喜欢
    • 2014-04-19
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多