从概念上讲,结果没有区别......flatMap
需要更多时间来产生相同的结果......
我将用一个更实际的例子来展示它flatMap
,map
&然后flatten
和flatten
对象测试扩展 App {
//平面图
println(timeElapsed(List(List(1, 2, 3, 4), List(5, 6, 7, 8)).flatMap(identity)))
// 映射然后展平
println(timeElapsed(List(List(1, 2, 3, 4), List(5, 6, 7, 8)).map(identity).flatten))
// 展平
println(timeElapsed(List(List(1, 2, 3, 4), List(5, 6, 7, 8)).flatten))
/**
* 时间流逝
*/
def timeElapsed[T](block: => T): T = {
val start = System.nanoTime()
val res = 块
val totalTime = System.nanoTime - 开始
println("经过的时间:%1d 纳秒".format(totalTime))
资源
}
}
重复几次后都执行相同flatMap
的结果flatten
结论:flatten
有效
经过时间:2915949 纳秒
列表(1、2、3、4、5、6、7、8)
经过时间:1060826 纳秒
列表(1、2、3、4、5、6、7、8)
经过时间:81172 纳秒
列表(1、2、3、4、5、6、7、8)