all

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

发布于 2022-03-22 23:21:50

Stream.map()在 Java 8
中,和方法有什么区别Stream.flatMap()

关注者
0
被浏览
41
1 个回答
  • 面试哥
    面试哥 2022-03-22
    为面试而生,有面试问题,就找面试哥。

    两者mapflatMap都可以应用于 aStream<T>并且它们都返回 a
    Stream<R>。不同之处在于该map操作为每个输入值生成一个输出值,而该flatMap操作为每个输入值生成任意数量(零个或多个)值。

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

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

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

    典型的用途是如果它想要发送零值,或者如果它想要返回多个值,则flatMap返回的映射器函数。但是当然可以返回任何流。Stream.empty()``Stream.of(a, b, c)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看