java java8使用累加器和组合器减少流
我正在尝试编写一个简单的reduce函数,它将检查srcList
的所有元素是否都存在于targetList
:
List<String> srcList = Arrays.asList("a", "b");
List<String> targetList = Collections.singletonList("a");
Boolean result = srcList.stream().reduce(true
, (prevResult, srcElement) -> targetList.contains(srcElement)
, (prevResult, currentResult) -> prevResult && currentResult);
System.out.println(result); // prints false as expected
上述lambda似乎没有如预期那样工作。例如,如果我们更改目标列表中的元素,结果将打印为true:
List<String> srcList = Arrays.asList("a", "b");
List<String> targetList = Collections.singletonList("b");
Boolean result = srcList.stream().reduce(true
, (prevResult, srcElement) -> targetList.contains(srcElement)
, (prevResult, currentResult) -> prevResult && currentResult);
System.out.println(result); // prints true
看起来表达式只返回上一次accumulator
求值的结果(即本例中的包含操作),组合器没有对所有结果执行&&
有人能解释一下吗
共 (0) 个答案