Java 8 Stream peek 與 map的區(qū)別

剛接觸java8 Stream的時候,經(jīng)常會感覺分不清楚 peek 與 map方法的區(qū)別其實了解一下λ表達(dá)式就明白了

首先看定義

Stream<T> peek(Consumer<? super T> action);

peek方法接收一個Consumer的入?yún)?。了解λ表達(dá)式的應(yīng)該明白 Consumer的實現(xiàn)類 應(yīng)該只有一個方法,該方法返回類型為void。

Consumer<Integer> c =  i -> System.out.println("hello" + i);

而map方法的入?yún)?Function。

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

Function 的 λ表達(dá)式 可以這樣寫

Function<Integer,String> f = x -> {return  "hello" + i;};

我們發(fā)現(xiàn)Function 比 Consumer 多了一個 return。
這也就是peek 與 map的區(qū)別了。

總結(jié):peek接收一個沒有返回值的λ表達(dá)式,可以做一些輸出,外部處理等。map接收一個有返回值的λ表達(dá)式,之后Stream的泛型類型將轉(zhuǎn)換為map參數(shù)λ表達(dá)式返回的類型

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

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,539評論 19 139
  • 轉(zhuǎn)自: Java 8 中的 Streams API 詳解 為什么需要 Stream Stream 作為 Java ...
    普度眾生的面癱青年閱讀 2,975評論 0 11
  • Stream是Java 8 提供的高效操作集合類(Collection)數(shù)據(jù)的API。 1. 從Iterator到...
    nkcoder閱讀 5,747評論 2 24
  • Java流庫(java.util.stream) 流提供了一種讓我們可以在比集合更高的概念級別上指定計算的數(shù)據(jù)視圖...
    thorhill閱讀 4,982評論 0 4
  • 密集的古鎮(zhèn)村莊 包圍藍(lán)天翅膀的池塘 天的那邊烏云密布 天的這邊晴空萬里 尋源去 有如桃花源記一般的閑情 又一場櫻花...
    瞿靜閱讀 244評論 0 4

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