Java stream.map 和 stream.forEach 區(qū)別

map

<R> Stream<R> map(Function<? super T, ? extends R> mapper)

map 方法接收一個功能型接口,功能型接口接收一個參數(shù),返回一個值。map 方法的用途是將舊數(shù)據(jù)轉(zhuǎn)換后變?yōu)樾聰?shù)據(jù),是一種 1:1 的映射,每個輸入元素按照規(guī)則轉(zhuǎn)換成另一個元素。該方法是 Intermediate 操作

Stream<String> stream = Stream.of("a", "b", "c", "d");
stream.map(String::toUpperCase).forEach(System.out::println);

以上代碼通過 map 方法,把 a, b, c, d 全部轉(zhuǎn)變成大寫,然后輸出

forEach

void forEach(Consumer<? super T> action)

forEach 接收一個 Consumer 接口,該接口我們之前講 Function 包時已經(jīng)提過了。它只接收不參數(shù),沒有返回值。然后在 Stream 的每一個元素上執(zhí)行該表達(dá)式

范例:

Stream<String> stream = Stream.of("I", "love", "you");
stream.forEach(System.out::println);

區(qū)別

生成一個新的對象的時候,使用 map 會更好;只是操作 list 內(nèi)部的對象時,用 forEach

這段代碼,是無效的(appList 不會變化):

appMemberList.stream().map(appMember -> appList.add(appMember.getApp()));

要改成 forEach 才行

appMemberList.stream().forEach(appMember -> appList.add(appMember.getApp()));
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • “孟夏之際,萬物并秀…群賢畢至…集思廣益…篳路藍(lán)縷…鑿空之旅…桃李不言,下自成蹊…馬可波羅…伏爾泰…萊布尼茨…雄漢...
    遺忘也是一種選擇閱讀 528評論 0 1
  • 對我來說可能就是彩鉛吧~哈哈。感覺太酷了~
    懵小六撕烤隨筆閱讀 427評論 0 0
  • 昨晚一夜未眠,老公的呼嚕聲陣陣,小寶也不停的要吃奶,嘴里一直含著奶頭,可苦了我!誰知老公第二天還說我也打呼嚕!估計...
    e0cb2b4a7b1b閱讀 242評論 0 0

友情鏈接更多精彩內(nèi)容