34-使用流处理大数据集
11.13 使用流处理大数据集
Stream
是一系列被串行或并行地过滤和转换,从而得到最终结果的元素。最终结果可以是原生类型的值、普通对象,也可以是一种数据结构。下面这些特性更清楚地定义了Stream。
- 流不是一种数据结构,它是一系列的数据。
- 可以从不同的源上创建流,比如集合(列表、数组……),文件,字符串,或是一个向流提供元素的类。
- 无法单独访问流中的一个元素。
- 无法修改流的源。
- 流定义了两类操作:一类是中间操作,这类操作对流中的元素进行转换、过滤、映射或排序,从而生成一个新的Stream;另一类是生成最终结果的结尾操作。零到多个中间操作和一个结尾操作形成了流的流水线。
- 中间操作是延迟执行的。在结尾操作开始执行之前,中间操作是不会执行的。如果Java检测到一个中间操作不影响最终结果的话,那么就会避免在流的一个或多个元素上执行它。
在实现一个并发处理大数据集的操作时,可以使用 Java并发API 提供的不同元素。它们主要有 fork/join框架 或 Executor框架 ,但最好的选择应该是并行流。本节将实现一个案例来阐明并行流的优势。