3 层嵌套 for 循环到 Java Stream

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

我正在尝试将普通的 Java 代码转换为 Streams 但没有成功。有人可以帮忙吗?

这是我要转换的代码

Set<Strings> restrictedValues = getRestrictedValues();
for (Customer customer : request.getCustomers()) {
    for (Order order : customer.getOrders()) {
        for (String restrictedValue : restrictedValues) {
            if (order.isItemExcluded(restrictedValue)) {
                response.setExcludedItem(order.getId());
            }
            if (treatment.isItemIncluded(restrictedValue)) {
                response.setIncludedItem(order.getId());
            }
        }
    }
}

到目前为止我所做的在下面,我有点迷路了。

request.getCustomers().stream()
  .forEach(customer->{
     customer.getOrders().stream()
         .forEach(order->{
             order.isItemExcluded(restrictedValue)
                 }).collect(????) //What to do now });</code>
java for-loop stream
1个回答
0
投票

您可以使用

flatMap
并使用
forEach
终端操作,


request.getCustomers()
        .stream()
        .flatMap(customer -> customer.getOrders().stream())
        .forEach(order -> restrictedValues.forEach(restrictedValue -> {
            if (order.isItemExcluded(restrictedValue)) {
                response.setExcludedItem(order.getId());
            }
            if (treatment.isItemIncluded(restrictedValue)) {
                response.setIncludedItem(order.getId());
            }
        }));
© www.soinside.com 2019 - 2024. All rights reserved.