首页 > 解决方案 > 为什么 map() 函数中的表达式仅在使用 count() 函数时才执行?

问题描述

当我使用count()函数“内部测试”消息按预期调用了 3 次但当我删除时,count(函数调用test()函数没有被调用。从count()函数文档中,我了解到它返回给定流中元素的计数。

public class Start {
    public static int test(int input) {
        System.out.println("inside processRecord");
        return input;
    }
    public static void main(String[] args) throws InterruptedException {
        List<Integer> data = Arrays.asList(1,2,3);
        data.parallelStream().map(Start::test).count();
    }
}

标签: javajava-8java-stream

解决方案


因为count是终端操作,只有在终端存在时才会调用/执行流;据说他们很懒...

请注意,在 java-9 及更高版本中,您的示例不会从map任何一种方式打印这些语句,因为您只关心有多少并且map有点无用......


推荐阅读