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