Stream流操作中的map()与 flatMap()的区别

1、功能说明

(1)map(),对集合中的元素逐个进行函数操作映射成另外一个。
(2)flatMap,接收一个函数作为参数,将流中的每个值都转换为另一个流,然后把所有的流都连接成一个流。

【示例一】
// 如果我们把List中的 所有字符变为大写。
Map 操作
[['a', 'b', 'c'], ['d', 'e', 'f']]   =>>   [['A', 'B', 'C'], ['D', 'E', 'F']]

FlatMap 操作
[['a', 'b', 'c'], ['d', 'e', 'f']]   =>>   ['A', 'B', 'C', 'D', 'E', 'F']
2、相同点

Map 和 FlatMap,都是流中 集合数据类型的 转换操作符。

3、不同点

(1)Map 是 将 集合数据中每一个元素作为 参数 传入的lambda表达后进行转换操作, 得到的结果用一个ArrayList 收集起来。
(2)FlatMap, Flat(扁平化),顾名思义, 就是在Map的基础上,会将集合的数据结构给展开。flatMap()方法用于将流中的每个元素转换为一个新的流,然后将这些新的流合并成一个流。
(3)FlatMap传入的lambda表达式的返回值,必须为集合接口类型。如:flatMap(Arrays::stream)、flatMap(List::stream)

你可能感兴趣的:(java)