【发布时间】:2017-01-29 14:13:49
【问题描述】:
尝试filter 一个流对不同列表中的数据:
它有效,但我在流中间使用了for 循环。我找不到任何有关如何将 for 循环转换为流的信息。
我可以只 .stream() selction.getItems() 而不是 .forEach() 并拥有一个新的 .stream() DATA.accounts,但这是糟糕的代码,因为它必须在每个 .forEach. 上重新传输
y=1;
DATA.accounts.stream()
.flatMap(estimate -> estimate.getElements().stream())
.filter( ele-> {
// different list;
for (Element element:selection.getItems()){
if (element.getId()==ele.getId()){
return true;
}
}
return false;
})
.forEach(element -> {
element.setDateSchedualed(selectedDate);
element.setOrder(y);
y++;
});
【问题讨论】:
-
for-each 中的
return false是故意存在的吗?就像您只想检查第一个元素一样? -
@Calculator 不,不应该存在错误。编辑了。
-
改变
y变量的代码根本不起作用,这比filter中的循环更让你烦恼...
标签: java for-loop java-8 java-stream