java - 为什么只有在使用 count() 函数时才执行 map() 函数内的表达式?

标签 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();
    }
}

最佳答案

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

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

关于java - 为什么只有在使用 count() 函数时才执行 map() 函数内的表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54214497/

相关文章:

java - 自动裁剪图像边界

java - Jersey Rest API立即返回,长任务继续

java - 在 JavaFX 中为大量图形元素设置动画的最快方法

java - 流过滤器效果不佳我想打印 10 行

java - 过滤可选值的最小值

java - 如何找到线程最初启动的位置

java - 要求给定类型的所有字段都由某个字段注释进行注释

java - 如何用 Java 8 编写 instanceof?

Java 将文件复制到 zip AccessDeniedException

Java 8 根据列表部分的条件过滤列表