首页 > 代码库 > [Java 8 Lambda] java.util.stream 简单介绍

[Java 8 Lambda] java.util.stream 简单介绍

包结构例如以下所看到的:




这个包的结构非常easy,类型也不多。

 

BaseStream接口

全部Stream接口类型的父接口,它继承自AutoClosable接口,定义了一些全部Stream都具备的行为。

 

由于继承自AutoClosable接口,所以全部的Stream类型都能够用在Java 7中引入的try-with-resource机制中,以达到自己主动关闭资源的目的。实际上,仅仅有当Stream是通过SocketFiles IO等方式创建的时候,才须要关闭它。对于来自于CollectionsArraysStream,是不须要关闭的。

 

Stream接口

定义了众多Stream应该具有的行为。

最典型的比方filter方法族,map方法族以及reduce方法族,这三个方法是FunctionalProgramming的标志。典型的Map-Filter-Reduce模式便是依靠这三个操作来定义的。

 

与此同一时候,Stream接口还定义了一些用于创建Streamstatic方法,创建的Stream能够是有限的,也能够是无限的。有限的非常好理解,而无限Stream是一个新概念,通过generate方法或者iterate方法实现。

 

IntStream, LongStream以及 DoubleStream接口

基于原生类型int, long以及doubleStream。提供了众多类型相关的操作。

典型的比如,sum方法,min/max方法,average方法等。这些方法都是Reduce操作的详细实现。

 

Collect接口

对于Reduce操作的抽象。此接口中定义了经常使用的Reduce操作。

当中定义的Reduce操作能够通过串行或者并行的方式进行实现。BaseStream接口中的parallelsequentialunordered方法提供的高层API使并发程序设计变得很简洁。

毕竟,Map-Filter-Reduce模式的灵魂就在于并行计算。

 

Collectors

提供了众多能够直接使用的Reduce操作。

典型的比方groupingBy以及partitioningBy操作。它们都能够通过串行或者并行的方式进行实现。比方,groupingByConcurrent会使用并行的方式进行grouping操作。

 

StreamSupport

提供了底层的一些用于操作Stream的方法,假设不须要创建自己的Stream,一般不须要使用它。