亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 4611 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號