lambda表达式的map和flatmap的区别

map: 对于Stream中包含的元素使用给定的转换函数进行转换操作,新生成的Stream只包含转换生成的元素。这个方法有三个对于原始类型的变种方法,分别是:mapToInt,mapToLong和mapToDouble。这三个方法也比较好理解,比如mapToInt就是把原始Stream转换成一个新的Stream,这个新生成的Stream中的元素都是int类型。之所以会有这样三个变种方法,可以免除自动装箱/拆箱的额外消耗;

map方法示意图: 图片描述 https://segmentfault.com/img/bVC5GJ?w=403&h=202/view flatMap:和map类似,不同的是其每个元素转换得到的是Stream对象,会把子Stream中的元素压缩到父集合中;

flatMap方法示意图: 图片描述 https://segmentfault.com/img/bVC6A1?w=403&h=205/view

猜你喜欢

转载自my.oschina.net/u/3694754/blog/1824960