Java Stream是新版JDK中的重要特性,很多伙伴对此不太熟悉,甚至不怎么使用,源于对其意义不理解,什么是流处理?为什么是惰性的?
下面的一个场景,可能有助于您理解流的行为。
妻子对儿子说:“关掉电视”。
跟没说一样。
妻子说:“把垃圾倒掉”。
没有任何动作。
她再说:“做你的家庭作业”。
铅笔没被拿起过。
妻子说:“我要叫你爸爸了。”
孩子马上行动起来,按下电视遥控器上的关闭按钮……
像十几岁的孩子一样,Stream
只有两种方法:中间和最终。
根据家中每位家长扮演的角色,后一个方法等效于 callDaddy()
或 callMommy()
方法。
所以在使用Stream时不要太担心它执行了太多无用的中间计算,因为素有的调用在最终结果被求值前会进行融合!所以是非常高效的,比我们大部分for...或者while...等。