我得到了一份订单清单,每个订单都有一个产品清单。我尝试做的是将产品的“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)}
提取需要映射的所需值并将其保存在所有子记录中,然后展平子记录即可解决。要保存常见的所需值,您可以使用 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()));