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

Java 为什么map()函数中的表达式仅在使用count()函数时执行?,java,java-8,java-stream,Java,Java 8,Java Stream,当我使用count()。从count()函数文档中,我了解到它返回给定流中的元素计数 public class Start { public static int test(int input) { System.out.println("inside processRecord"); return input; } public static void main(String[] args) throws InterruptedExcep

当我使用
count()。从
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();
    }
}
公共类启动{
公共静态int测试(int输入){
System.out.println(“内部进程记录”);
返回输入;
}
公共静态void main(字符串[]args)引发InterruptedException{
列表数据=数组.asList(1,2,3);
data.parallelStream().map(Start::test).count();
}
}

因为
计数
是一个终端操作,只有当终端操作存在时才调用/执行流;据说他们很懒


请注意,在java-9及以上版本中,您的示例不会以任何方式打印
map
中的语句,因为您关心的只是数量,而
map
有点无用

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

阅读终端操作: