Java函数式编程(七):MapReduce
本文我们会看到Java 8在摇身一变支持函数式编程后,map和reduce组合的首次亮相。这些操作有一个共同点,它们都是对集合中的单个元素进行操作。要算出所有字符的总数我们得知道每个名字的长度。事实上,JDK中sum()方法的实现用的就是reduce()方法。我们来看下reduce操作更常用的一些形式。我们可以用reduce操作来比较两个元素的长度,然后返回最长的那个,再和剩下的元素做进一步比较。除此之外,它还记录了lambda表达式返回的计算结果。这个lambda表达式正好能适配成JDK中一个BinaryOperator的函数式接口的apply方法。这正是reduce方法要接受的参数类型。reduce()方法返回的是一个Optional值,因为传递给它的集合可能是空的。如果列表只有一个元素,reduce方法直接返回那个元素,不会对lambda表达式进行调用。
用户评论