" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2022年08月01日 15:21:26   作者:Haoo_是個程序員  
本文主要介紹了Java中stream.map和stream.forEach的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

網(wǎng)上很多關(guān)于講解這倆個區(qū)別的文章,但大多數(shù)要么不明不白,要么太復(fù)雜難理解。所以自己通俗的講一下,畢竟不會太深奧,只是個人理解 (評論區(qū)指出了錯誤改了一下)。

什么是 stream 流

我們在使用集合或數(shù)組對元素進(jìn)行操作時往往會遇到這種情況:通過對不同類型的存儲元素,按照特定條件進(jìn)行查找、排序、等操作時往往會寫一大段代碼,而且更要命的是,不同類型的數(shù)據(jù),操作的方法也不一樣,比如一個存儲 Student 實體類和一個只存儲 String 類型的集合倆者的操作步驟肯定大不一樣且無法通用,而 stream API 就解決了這些問題,對數(shù)據(jù)操作時進(jìn)行了統(tǒng)一的處理。

可以這樣理解,stream API 把集合或數(shù)組里面的數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一格式,在通過指定的方法,對里面的元素進(jìn)行操作,之后將操作過后的的數(shù)據(jù)按照流的格式返回。這樣做的好處就是我們不必再關(guān)心我們操作的數(shù)據(jù)是什么類型,只需要統(tǒng)一轉(zhuǎn)換成 stearm 流進(jìn)行統(tǒng)一操作,大大簡化了我們開發(fā)時的過程。

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

我們先看這倆個方法的定義??

void forEach(Consumer<? super T> action);

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

即使看不懂這倆個方法定義,但你也肯定能知道 forEach 返回的 void, 而 map 返回的 Stream 類型,接下來再看這個例子??

// 定義一個 Integer 類型的集合
List<Integer> numbers = Arrays.asList( 2, 3, 7,  5);
// 獲取對應(yīng)的平方數(shù)
numbers.stream().map(x-> x*x).forEach(System.out::println);
//結(jié)果: 4 9 49 25

由此可以得到結(jié)論: map 是將 number 中的每個元素進(jìn)行取值之后進(jìn)行操作,再將操作過后的每個結(jié)果返回到 number 中去,而 forEach 是一種遍歷循環(huán),通過遍歷循環(huán)執(zhí)行必要的操作,并不會把值直接返回到 number

到此這篇關(guān)于Java中stream.map和stream.forEach的區(qū)別的文章就介紹到這了,更多相關(guān)Java stream.map和stream.forEach內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 基于TCP Socket 實現(xiàn)文件上傳

    Java 基于TCP Socket 實現(xiàn)文件上傳

    這篇文章主要介紹了Java 基于TCP Socket 實現(xiàn)文件上傳的示例代碼,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • 關(guān)于BufferedReader的read()和readLine()的區(qū)別

    關(guān)于BufferedReader的read()和readLine()的區(qū)別

    這篇文章主要介紹了關(guān)于BufferedReader的read()和readLine()的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring多數(shù)據(jù)源切換失敗,發(fā)現(xiàn)與事務(wù)相關(guān)問題

    Spring多數(shù)據(jù)源切換失敗,發(fā)現(xiàn)與事務(wù)相關(guān)問題

    這篇文章主要介紹了Spring多數(shù)據(jù)源切換失敗,發(fā)現(xiàn)與事務(wù)相關(guān)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • SpringSecurity實現(xiàn)動態(tài)加載權(quán)限信息的方法

    SpringSecurity實現(xiàn)動態(tài)加載權(quán)限信息的方法

    這篇文章主要介紹了SpringSecurity實現(xiàn)動態(tài)加載權(quán)限信息,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定需要的朋友可以參考下
    2022-01-01
  • 解決Spring中@Value注解取值為null問題

    解決Spring中@Value注解取值為null問題

    近期應(yīng)用中因業(yè)務(wù)迭代需要接入 user 客戶端,接入后總是啟動失敗,報注冊 user bean 依賴的配置屬性為 null,所以接下來小編就和大家一起排查分析這個問題,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • spring boot 利用注解實現(xiàn)權(quán)限驗證的實現(xiàn)代碼

    spring boot 利用注解實現(xiàn)權(quán)限驗證的實現(xiàn)代碼

    這篇文章主要介紹了spring boot 利用注解實現(xiàn)權(quán)限驗證的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • java中final關(guān)鍵字使用示例詳解

    java中final關(guān)鍵字使用示例詳解

    Java中的final關(guān)鍵字非常重要,它可以應(yīng)用于類、方法以及變量。這篇文章中帶你看看什么是final關(guān)鍵字?將變量,方法和類聲明為final代表了什么?使用final的好處是什么?最后也有一些使用final關(guān)鍵字的實例
    2014-01-01
  • 如何使用Guava Cache做緩存

    如何使用Guava Cache做緩存

    Cache在ConcurrentHashMap的基礎(chǔ)上提供了自動加載數(shù)據(jù)、清除數(shù)據(jù)、get-if-absend-compute的功能,本文給大家介紹如何使用Guava Cache做緩存,感興趣的朋友一起看看吧
    2023-11-11
  • 深入了解JVM(Java虛擬機)內(nèi)存結(jié)構(gòu)

    深入了解JVM(Java虛擬機)內(nèi)存結(jié)構(gòu)

    Java虛擬機(Java Virtual Machine,JVM)是Java程序的運行環(huán)境,它是一個抽象的計算機模型,通過解釋和執(zhí)行Java字節(jié)碼來運行Java程序,本將大家深入了解JVM(Java虛擬機)內(nèi)存結(jié)構(gòu),需要的朋友可以參考下
    2023-08-08
  • SpringBoot整合ES-Elasticsearch的實例

    SpringBoot整合ES-Elasticsearch的實例

    這篇文章主要介紹了SpringBoot整合ES-Elasticsearch的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論