首页 > 解决方案 > 如何使用 lambda 遍历嵌套的 Java 集合

问题描述

我通读了几个关于使用 Lambda 操作嵌套 java 集合的线程,但没有一个解决我的具体情况,尽管这个接近然后起飞到不同的方向(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);
             }
     }
 }

谢谢

标签: javalambda

解决方案


如果您只想进行迭代,forEach那么 Stream.java 或 Iterable.java 上的方法就足够了。这是使用 for 循环执行您尝试执行的操作的“流式”方式

users.stream().forEach( user ->
        user.getOrders().stream().forEach( order -> {
            order.setConsumer(user);
            order.getLineItems().stream().forEach(
                    lineItem -> lineItem.setOrder(order)
            );
        }
));

尽管您实际上并不需要将这些 getter 返回的可迭代对象转换为流。


推荐阅读