理解Java 8 的map() 和flatMap() 方法之間的差異
在Java 8 中,map() 和flatMap ()方法可以應用於Stream
map() 方法
map() 操作為每個輸入值產生一個輸出值。本質上,它將一個函數應用於輸入流中的每個元素。此函數接受輸入值並產生單一結果值。
flatMap() 方法
相反, flatMap() 操作可以產生任意數量的值 (包括零)每個輸入值。這是透過其參數實現的:一個接受一個值並傳回任意數量的值的函數。
造成這種差異的原因是 Java 方法只能傳回零個或一個值。 flatMap() 透過允許映射器函數傳回流作為其輸出來迴避此限制。該流中的值隨後被排出並傳遞到輸出流。因此,輸出被視為“扁平化”,因為映射器函數的值分組在輸出流中無法區分。
用法
通常,在以下情況下使用flatMap()映射器函數打算傳回零值(使用Stream.empty())或多個值(使用Stream.of(a, b, c))。儘管如此,任何類型的流都可以返回。
以上是Java 8 Streams 中的 `map()` 和 `flatMap()` 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!