为什么仅在使用count()函数时才执行map()函数内部的表达式?

时间:2019-01-16 09:58:33

标签: java java-8 java-stream

当我使用count()函数“内部测试”消息时,调用的次数达到了预期的三倍,但是当我删除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();
    }
}

2 个答案:

答案 0 :(得分:2)

因为count是一种终端操作,并且仅当存在一个终端时才调用/执行流;据说他们很懒...

请注意,在Java-9及更高版本中,您的示例不会以任何一种方式打印来自map的那些语句,因为您关心的只是多少map有点没用...

答案 1 :(得分:0)

中间操作(如map)返回一个流,并由返回非流值的终端操作调用。