当前位置: 首页 > 面试题库 >

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

朱建弼
2023-03-14
问题内容

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


问题答案:

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

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

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

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

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



 类似资料:
  • 有人能给我解释一下map和flatMap之间的区别,以及什么是各自的好用例吗? “结果扁平化”是什么意思?它有什么好处?

  • 在Java 8中,和方法有什么区别?

  • 我对spark(和编程)很陌生,所以如果你能帮助我理解这两个输出之间的区别,那就太好了。

  • 我创建的以下地图之间有什么不同(在另一个问题中,人们似乎可以互换地使用它们来回答,我想知道它们是否/如何不同):

  • 问题内容: 我正在制作一个简单,非常轻便的前控制器。我需要将请求路径匹配到不同的处理程序(操作),以便选择正确的处理程序。 在我的本地计算机上并返回相同的结果。但是我不确定他们将在生产环境中返回什么。 那么,这些方法有什么区别,我应该选择什么? 问题答案: 给出URI后面的额外路径信息,用于访问Servlet,其中给出完整的URI。 我本以为它们会有所不同,因为首先必须为Servlet配置自己的U

  • 问题内容: 我一直以为功能和方法是相同的,直到我通过“ Swift编程语言”电子书学习Swift 之前。我发现我 不能greet(“John”, “Tuesday”)用来调用在类中声明的函数, Here is the code:- 当我在Objective-C中编程时,我从未意识到这种差异。 Swift中的函数和方法之间有什么区别? 在Swift中什么时候使用函数以及何时使用方法? 问题答案: 经