java8 stream流

記一次糟心的使用:

前奏:

首先stream流分為三個(gè)階段:

? 1.創(chuàng)建

? 2.中間操作 :返回的還是流

? 3.終止操作:

最重要的一點(diǎn),如果你的代碼里沒(méi)有敲最后的終止操作,中間操作的代碼不會(huì)執(zhí)行,不會(huì)有結(jié)果的產(chǎn)生。這個(gè)叫惰性求值。

關(guān)于stream流有兩個(gè)問(wèn)題:

1.并行流和串行流?

并行流采用ForkJoinPool實(shí)現(xiàn)的,線程數(shù)默認(rèn)是cpu的數(shù)量

2.中間操作:

無(wú)狀態(tài)操作和有狀態(tài)操作:

2.flatMap 和map?

插入一個(gè)來(lái)自網(wǎng)絡(luò)的圖片


3.stream運(yùn)行機(jī)制:

wuzhua

1.只要沒(méi)有有狀態(tài)操作,就采用鏈?zhǔn)秸{(diào)用機(jī)制,每一條數(shù)據(jù)都只迭代一次,有狀態(tài)操作會(huì)階段無(wú)狀態(tài),單獨(dú)處理.

每一個(gè)中間操作返回一個(gè)新的流,流中有一個(gè)屬性sourceStage指向同一個(gè)Head

head-->nextStage-nextStage------ null


2.并行操作:有狀態(tài)的中間操作不一定并行操作。

3.parallel()/sequential() 中間操作,不過(guò)并沒(méi)有創(chuàng)建新的流,只是修改Head的并行標(biāo)志

使用:


數(shù)據(jù)結(jié)果:


使用2:

產(chǎn)生結(jié)果:


總結(jié):

我在使用了還有問(wèn)題,和lambda和方法的引用結(jié)合上,寫的不順手。原來(lái)是我lambda學(xué)的不到位,lambda學(xué)好了在用stream比較好。

char

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

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評(píng)論 19 139
  • Java流庫(kù)(java.util.stream) 流提供了一種讓我們可以在比集合更高的概念級(jí)別上指定計(jì)算的數(shù)據(jù)視圖...
    thorhill閱讀 4,996評(píng)論 0 4
  • Jav8中,在核心類庫(kù)中引入了新的概念,流(Stream)。流使得程序媛們得以站在更高的抽象層次上對(duì)集合進(jìn)行操作。...
    仁昌居士閱讀 4,119評(píng)論 0 6
  • 鳳頭篇1、如果你想讓滿屋的高管閉嘴,有一個(gè)小竅門——你可以問(wèn)他們:“你憑什么領(lǐng)導(dǎo)別人?”過(guò)去10年間,我們?yōu)闅W美的...
    下天巴熊閱讀 379評(píng)論 0 0
  • 身在靜中不知閑, 白云悠悠常相看。 青山無(wú)語(yǔ)連排坐, 蒼海渺渺天地間。 數(shù)歲月,記流年。 只給“簡(jiǎn)書(shū)”寫浪漫。 心...
    曹煥甫閱讀 253評(píng)論 2 3

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