有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案