25-结果分析
结果分析
本节介绍了如何用一个中间操作来转换流中的元素,以及一个完成源类型到目标类型转换的表达式。在这个例子中,我们使用了如下3种不同的方法。
mapToDouble()
:我们使用该方法把包含对象的Stream
转换成以双精度型数字作为元素的DoubleStream
。该方法接收的参数可以是一个lambda表达式,也可以是一个ToDoubleFunction
接口的实现。表达式会接收一个流中的元素并返回一个双精度型数值。map()
:如果必须将Stream
中的元素转换成另一种类型,就可以使用该方法。比如在本例中将Person
类转换成了BasicPerson
类。该方法接收一个lambda表达式或Function
接口的实现作为参数。该表达式必须创建一个新对象并初始化它的属性。flatMap()
:该方法适合于一个更复杂的场景,当你需要处理一个包含Stream
对象的Stream
,而且想要将它们转换成一个唯一的流时,就可以使用它。虽然该方法和map()
一样接收一个lambda表达式或Function
接口的实现作为参数,但是在flatMap()
中,这个表达式必须返回Stream
对象。flatMap()
方法会自动把所有流串联成唯一的流。