flatmap 和map的区别是:map方法返回的是一个object,map将流中的当前元素替换为此返回值;flatMap方法返回的是一个stream,flatMap将流中的当前元素替换为此返回流拆解的流元素。
一、flatmap 和map的区别
map方法返回的是一个object,map将流中的当前元素替换为此返回值;latMap方法返回的是一个stream,flatMap将流中的当前元素替换为此返回流拆解的流元素。
Map返回一个流,包含给定函数应用在流中每一个元素后的结果;flatmap返回一个流,包含将此流中的每个元素替换为通过给定函数映射应用于每个元素而生成的映射流的内容。
举例说明
有二箱鸡蛋,每箱5个,现在要把鸡蛋加工成煎蛋,然后分给学生。
map做的事情:把二箱鸡蛋分别加工成煎蛋,还是放成原来的两箱,分给2组学生;
flatMap做的事情:把二箱鸡蛋分别加工成煎蛋,然后放到一起【10个煎蛋】,分给10个学生
scala中map和flatmap的区别可以用一句话进行总结,原始RDD假如是10行,经过map操作后依旧是10行,但是flatmap后会>=10行
map是对每一行进行处理,flatmap对每一行进行处理后 如果处理结果的长度是1,那么就和map操作一样;如果处理后是个List或者Array类型,那么就会将这个List或者Array的每个元素变成1行。
延伸阅读:
二、什么时候用map函数
map函数通过将指定的function函数依次作用在给定序列iterable中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。
当需要对序列进行某些操作或者处理,将其转换为新的列表时,用map函数是最合适不过了。当然,除了最基本的用法,map函数还有一些特殊的使用技巧,比如:可以进行类型转换(将元组或字符串转换为列表,因为map的返回值是列表),可以提取字典中的key等。
以上就是关于flatmap 和map有什么区别的内容希望对大家有帮助。