我通读了几个关于使用 Lambda 操作嵌套 java 集合的线程,但没有一个解决我的具体情况,尽管 this one 接近并转向不同的方向 (flatMap)。请教我如何在 Lambda 中编写以下代码。
for(AppUser user : users){
List<CustomerOrder> orders = user.getOrders();
for(CustomerOrder order : orders){
order.setConsumer(user);
List<LineItem> items = order.getLineItems();
for (LineItem item : items){
item.setOrder(order);
}
}
}
谢谢
答案 0 :(得分:0)
如果您只想迭代,Stream.java 或 Iterable.java 上的 forEach
方法应该足够了。这是使用 for 循环执行的操作的“流式”方式
users.stream().forEach( user ->
user.getOrders().stream().forEach( order -> {
order.setConsumer(user);
order.getLineItems().stream().forEach(
lineItem -> lineItem.setOrder(order)
);
}
));
尽管您实际上并不需要将这些 getter 返回的可迭代对象转换为流。
答案 1 :(得分:0)
这是我想出的解决方案,但我看到 Smarth Ktyal 已经发布了答案。
users
.stream()
.forEach(e->e.getOrders()
.stream()
.forEach(k->{
k.setConsumer(e);
k.getLineItems()
.stream()
.forEach(l->l.setOrder(k));
}
)
);