Java 8的流streams是个小精灵,它藏在数组Arrays和集合collection 背后,可以用stream()把它召唤出来。
小精灵处理数据威力非凡,可它不能赤手空拳干活啊,它手持一个很神奇的兵器,这个兵器叫函数式接口functional interface ,那这个兵器长什么样呢?它虽然神奇,但样子却非常朴素自然。它有个怪怪的名字:λ表达式。
哈,下面开始好好说话。
streams 就是一个小精灵,它的API很强大,使用这些API时的参数就是函数式接口,而函数式接口以λ表达式实现,所以长成λ表达式的样子。三者的关系就是这样。
By the way, λ表达式的来历可不简单,它和图灵机是等价的,就是说,世界上一切算法都是图灵机,所以一切算法都可写成λ表达式,只不过复杂算法写起来很麻烦而已。所以说,Java 8 引入λ表达式是有点底气的。