【发布时间】: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 Ask 和edit 中的提示。
-
对不起!上面的代码运行良好。我只需要将我的 foreach 循环变成流。没有错误或任何东西。我只需要将它们变成流。
标签: lambda foreach java-stream maps