Java流:迭代两个集合,链接响应
在下面的代码块中,processRule()从差异列表中删除条目Java流:迭代两个集合,链接响应,java,java-stream,Java,Java Stream,在下面的代码块中,processRule()从差异列表中删除条目 public List<Difference> process(List<Rule> rules, List<Difference> differences) { for (Rule rule : rules) { differences = processRule(rule, differences); } return differences; }
public List<Difference> process(List<Rule> rules, List<Difference> differences) {
for (Rule rule : rules) {
differences = processRule(rule, differences);
}
return differences;
}
公共列表过程(列表规则、列表差异){
for(规则:规则){
差异=处理规则(规则,差异);
}
回报差异;
}
如何使用流api实现这一点?我不能只使用flatMap,因为我需要每次调用processRule()都减少
差异
作为参数 使用stream reduce可能类似于此。
注意:未测试,从我的手机发布
return rules
.stream()
.reduce(differences, (rule1, rule2) ->
processRule(rule2,
processRule(rule1, differences))
} );
processRule
在做什么?只是附加到列表中?创建新列表?我不能只使用flatMap
,因为我需要每次调用processRule()都减少差异。。。请详细说明。@MichaelprocessRule
transformsdiff
(实际上是删除项,但通常可以执行任何操作)。其思想是,每个下一个规则
处理都必须在更新的diff
上执行。你为什么认为…-也许流不是为此而设计的,但我觉得应该存在通过流的很好的解决方案。@sab,它不是reduce的精确语法,但是如果这种reduce
对您不起作用,那么就没有其他解决方案了。使用循环。