如何使用 lambda 遍历嵌套的 java 集合

时间:2021-03-05 13:17:47

标签: java lambda

我通读了几个关于使用 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);
             }
     }
 }

谢谢

2 个答案:

答案 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));
                                }
                            )
                    );
相关问题