07-归约一个流的元素
6.3 归约一个流的元素
MapReduce 是一种编程模型,这种模型用在一个分布式集群环境中使用了大量机器处理的超大数据集。这种编程模型有如下两类操作。
- Map: 该操作把原始的元素过滤转换为一种更适合归约操作的形式。
- Reduce: 该操作是在所有元素之上生成一个总计结果,比如,为数字集合生成总数或平均值。
这种编程模型通常用在函数式编程里。而在Java的生态环境中, Apache软件基金会的Hadoop 项目提供了这种编程模型的实现。 Stream
类实现了如下两种不同的归约操作。
- 单纯的归约操作:实现在不同版本的
reduce()
方法里,它们处理一个流的所有元素并得到一个值。 - 可变的归约操作:实现在不同版本的
collect()
方法里,它们处理一个流的所有元素并得到一个可变的数据结构(如Collection
或StringBuilder
)。
本节将介绍如何使用不同版本的 reduce()
方法从一个充满值的流中得到一个结果。也许你已经猜到了, reduce()
方法是一个流的结尾操作。