Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java流:迭代两个集合,链接响应_Java_Java Stream - Fatal编程技术网

Java流:迭代两个集合,链接响应

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; }

在下面的代码块中,processRule()从差异列表中删除条目

  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()都减少差异。。。请详细说明。@Michael
processRule
transforms
diff
(实际上是删除项,但通常可以执行任何操作)。其思想是,每个下一个
规则
处理都必须在更新的
diff
上执行。你为什么认为…-也许流不是为此而设计的,但我觉得应该存在通过流的很好的解决方案。@sab,它不是reduce的精确语法,但是如果这种
reduce
对您不起作用,那么就没有其他解决方案了。使用循环。