Lambda Foreach循环成流
在删除foreach循环并将其转换为流方面,我还有另一个问题。我将在这里发布整个方法,以防需要更多的信息,而不仅仅是foreach循环。 我已经试着用平面图来做了,但它并不能解决我的问题。我希望你们中的一些人能帮助我!我将非常感激Lambda Foreach循环成流,lambda,foreach,java-stream,maps,Lambda,Foreach,Java Stream,Maps,在删除foreach循环并将其转换为流方面,我还有另一个问题。我将在这里发布整个方法,以防需要更多的信息,而不仅仅是foreach循环。 我已经试着用平面图来做了,但它并不能解决我的问题。我希望你们中的一些人能帮助我!我将非常感激 public void handlePickedOrders(final List<PickOrder> pickedOrders) { Contract.requires(pickedOrders != null, "ille
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;
}
}
}
}
}
public void handlePickedOrders(最终选择订单列表){
requires(pickedOrders!=null,“非法参数”);
//如果需要,您的代码将显示在此处
如果(错误){
新扫描仪(System.in).nextLine();
}
如果(!pickeOrders.isEmpty()){
Map removedProducts=pickedOrders.stream()
.flatMap(n->n.getPickOrderLines().stream())
.collect(Collectors.toMap->s.getProductCode(),
p->p.getQuantity(),
(a1,a2)->a1+a2);
//问题领域
对于(Map.Entry:removedProducts.entrySet()){
如果(错误){
System.out.println(“删除”+entry.getValue()+“+entry.getKey()的片段”);
}
替换(entry.getKey(),quantityOnHand.get(entry.getKey())-entry.getValue());
}
如果(错误){
System.out.println(“从队列中删除提货单”+提货单+”;
}
pickOrders.removeAll(pickedOrders);
对于(PickOrder PickOrder:pickOrders){
for(字符串productCode:removedProducts.keySet()){
if(pickOrder.containsProduct(productCode)){
pickOrder.CalCreplenishments需要(现有数量);
如果(错误){
System.out.println(“重新计算:+pickOrder”);
}
打破
}
}
}
}
}
虽然我还没有得到确切的问题陈述,但您可以尝试您正在寻找的这种嵌套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);
}*/
}
}));
}
谢谢
Girdhar慢点,从一个没有跟随你的冒险经历、没有背景的人的角度重新阅读你的问题。另外,描述您的问题可能会有所帮助(错误消息?发生意外情况?)。请仔细阅读中的提示,然后回答您的问题。对不起!上面的代码工作得非常好。我只需要把我的foreach循环变成溪流。没有错误或任何东西。我只需要把它们变成小溪。
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;
}
}