Java 8 中的 新特性Streams

Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。 使用 Stream API 无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。所以说,Java 8 中首次出现的 java.util.stream 是一个函数式语言+多核时代综合影响的产物.

java.util.stream 类以支持元素流上的函数式操作,例如集合上的map-reduce转换,例如:

 int sum = widgets.stream()
                      .filter(b -> b.getColor() == RED)
                      .mapToInt(b -> b.getWeight())
                      .sum();

带有显式for循环的处理元素本质上是串行的。流通过将计算重构为聚合操作的管道,而不是每个单独元素上的强制操作,从而促进并行执行。所有的流操作都可以串行或并行执行。JDK中的流实现创建串行流,除非显式请求并行。例如,Collection有Collection.stream()和collections . parallelstream(),它们分别生成顺序流和并行流;其它流轴承方式如IntStream。range(int, int)生成顺序流,但是这些流可以通过调用它们的base .parallel()方法有效地并行化。要并行执行之前的“widget权重之和”查询,我们需要:


     int sumOfWeights = widgets.parallelStream()
                               .filter(b -> b.getColor() == RED)
                               .mapToInt(b -> b.getWeight())
                               .sum();
 

猜你喜欢

转载自blog.csdn.net/wzbwzh/article/details/82708741