Java流中的聚合函数

Java流中的聚合函数,java,parallel-processing,java-8,aggregate-functions,Java,Parallel Processing,Java 8,Aggregate Functions,我不知道为什么我应该使用聚合函数。 我的意思是,如果提高性能,聚合函数将并行执行 但事实并非如此,根据文档,如果不使用parallelStream()而不是stream(),代码将不会是并行的,因此 如果没有更好的方法,为什么要使用stream() 这些代码不应该是相同的吗 //it is not parallel listOfIntegers.stream() .forEach( e -> System.out.print(e+" ")); 及 如果使用str

我不知道为什么我应该使用聚合函数。 我的意思是,如果提高性能,聚合函数将并行执行

但事实并非如此,根据文档,如果不使用parallelStream()而不是stream(),代码将不会是并行的,因此 如果没有更好的方法,为什么要使用stream()

这些代码不应该是相同的吗

//it is not parallel
listOfIntegers.stream()
            .forEach( e -> System.out.print(e+" "));


如果使用
stream
,列表中的所有数据都将按顺序处理,而如果使用
parallelStream
,则可能无法按顺序处理数据

考虑方法

static void test(Integer i){
        try {
            Thread.sleep((long) (1000*Math.random()));
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println(i);
    }

并使用
parallelStream
stream
比较此方法的输出。如果使用
stream
,列表中的所有数据都将按顺序处理,而如果使用
parallelStream
,则可能无法按顺序处理数据

考虑方法

static void test(Integer i){
        try {
            Thread.sleep((long) (1000*Math.random()));
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println(i);
    }

并使用
parallelStream
stream

比较此方法的输出,“聚合”函数是什么意思?流的使用?在语句中使用lambda表达式。您的意思是将map、filter、reduce作为聚合函数吗?
forEach
不是聚合函数。除此之外,在您的示例中,您很可能希望使用
stream()
而不是
parallelStream()
,因为顺序
stream()
在大多数情况下会更快。@Holger,
forEach()
是一个聚合操作,至少在某种意义上是这样的,因为它在教程中被称为聚合操作。参见Yes,Java将流中的操作称为“聚合函数”,那么“聚合”函数是什么意思呢?流的使用?在语句中使用lambda表达式。您的意思是将map、filter、reduce作为聚合函数吗?
forEach
不是聚合函数。除此之外,在您的示例中,您很可能希望使用
stream()
而不是
parallelStream()
,因为顺序
stream()
在大多数情况下会更快。@Holger,
forEach()
是一个聚合操作,至少在某种意义上是这样的,因为它在教程中被称为聚合操作。参见Yes,Java将流中的操作称为“聚合函数”,事实上,
List.stream()
按顺序处理数据比
stream()
的行为更能说明
列表的内部。例如,
集合
,不按特定顺序馈送流<根据定义,code>forEach()
会使流无序,因此永远不要指望
List
行为的实现细节会让元素按顺序处理。人们应该使用
forEachOrdered
,而不是
forEach
来有意地保持事物的有序性,这对
stream()
parallelStream()
都有效
List.stream()
按顺序处理数据这一事实比
stream()的行为更能说明
列表的内部
。例如,
集合
,不按特定顺序馈送流<根据定义,code>forEach()
会使流无序,因此永远不要指望
List
行为的实现细节会让元素按顺序处理。人们应该使用
forEachOrdered
,而不是
forEach
来有意地保持事物的有序,这对
stream()
parallelStream()都有效