设置订单中产品的订购日期

问题描述 投票:0回答:1

我得到了一份订单清单,每个订单都有一个产品清单。我尝试做的是将产品的“orderDate”属性设置为订单的“created”属性。我使用 for 循环完成此操作,但我想通过使用流来完成此操作,并且我不知道如何访问流中的先前元素。

这是我的代码:

//FOR EVERY PRODUCT SET THE ORDER CREATE DATE
    for(Order order:orders){
        for(Product product : order.getProducts()){
            product.setOrderDate(order.getCreated());
        }
    }

    orders.stream()
            .map(Order::getProducts)
            .flatMap(Collection::stream)
            .map(product -> {product.setOrderDate(Order::getCreated)}
java java-stream
1个回答
0
投票

提取需要映射的所需值并将其保存在所有子记录中,然后展平子记录即可解决。要保存常见的所需值,您可以使用 apache 实用程序,如 this 或使用内置的 jdk 条目

        orders.stream()
                .flatMap(order->order.getProducts()
                                        .stream()
                                        .map(product->new AbstractMap.SimpleEntry<String, Product>(order.getOrderDate(),product)))
                .forEach(entry->entry.getValue().setOrderDate(entry.getKey()));
© www.soinside.com 2019 - 2024. All rights reserved.