为了账号安全,请及时绑定邮箱和手机立即绑定

Java 8中map和flatMap方法有什么区别?

Java 8中map和flatMap方法有什么区别?

郎朗坤 2019-08-28 16:50:39
Java 8中map和flatMap方法有什么区别?在Java 8中,Stream.map和Stream.flatMap方法有什么区别?
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

双方mapflatMap可以应用到Stream<T>他们都返回Stream<R>。不同之处在于map操作为每个输入值生成一个输出值,而flatMap操作为每个输入值生成任意数量(零个或多个)值。

这反映在每个操作的参数中。

map操作采用a Function,为输入流中的每个值调用,并生成一个结果值,该值将发送到输出流。

flatMap操作采用概念上想要消耗一个值并产生任意数量的值的函数。但是,在Java中,返回任意数量的值的方法很麻烦,因为方法只能返回零或一个值。可以想象一个API,其中mapper函数flatMap获取值并返回数组或aList值,然后发送到输出。鉴于这是流库,一种表示任意数量的返回值的特别方法是mapper函数本身返回一个流!映射器返回的流中的值将从流中排出并传递到输出流。每次调用mapper函数返回的值的“丛”在输出流中根本不被区分,因此输出被称为“扁平化”。

典型用途是用于映射函数的flatMap返回Stream.empty(),如果要发送零个值,或者类似的东西Stream.of(a, b, c),如果要返回几个值。但是当然可以返回任何流。


查看完整回答
反对 回复 2019-08-28
?
绝地无双

TA贡献1946条经验 获得超4个赞

Stream.flatMap,因为它的名字可以猜到,是一个map和一个flat操作的组合。这意味着您首先将一个函数应用于元素,然后将其展平。Stream.map仅在不对流进行展平的情况下将函数应用于流。

要了解流的扁平化,请考虑[ [1,2,3],[4,5,6],[7,8,9] ]具有“两个级别”的结构。扁平化这意味着将其转换为“一级”结构:[ 1,2,3,4,5,6,7,8,9 ]


查看完整回答
反对 回复 2019-08-28
  • 3 回答
  • 0 关注
  • 4589 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号