我正在尝试将普通的 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>
您可以使用
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());
}
}));