StreamAPI多次消費(fèi)一個(gè)stream代碼實(shí)例
StreamAPI中的stream不能被重復(fù)消費(fèi),一旦它被使用,stream就被關(guān)閉了,別的地方再消費(fèi)它就會(huì)拋IllegalStateException:stream has already been operated upon or closed。
比如下面的代碼中,stream被消費(fèi)了兩次,第二次消費(fèi)時(shí)將會(huì)拋異常:
@Test
public void statistics() {
IntStream range = IntStream.range(0, 12);
OptionalInt min = range.min(); //第一次消費(fèi)正常
System.out.println(min);
long count = range.count(); //第二次消費(fèi)將報(bào)錯(cuò)
System.out.println(count);
}
如何實(shí)在需要多次消費(fèi)呢,通過(guò)Supplier來(lái)生產(chǎn)stream,每次調(diào)用supplier.get()獲取一個(gè)嶄新的stream對(duì)象,雖然對(duì)象是新的,但是每個(gè)stream中的數(shù)據(jù)是相同的,間接地實(shí)現(xiàn)了重復(fù)消費(fèi)的語(yǔ)義:
@Test
public void statistics0() {
Supplier<IntStream> supplier= () -> IntStream.range(0, 12);
OptionalInt min = supplier.get().min(); //第一次消費(fèi)正常
System.out.println(min);
long count = supplier.get().count(); //第二次消費(fèi)正常
System.out.println(count);
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決mybatis 中collection嵌套collection引發(fā)的bug
這篇文章主要介紹了解決mybatis 中collection嵌套collection引發(fā)的bug,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
Java基礎(chǔ)-Java的體系結(jié)構(gòu)
這篇文章主要介紹了Java的體系結(jié)構(gòu),Java幾乎成為了“開(kāi)源”的代名詞。第三方開(kāi)源軟件和框架。如Tomcat、Struts,MyBatis,Spring等,下面我們來(lái)看看文章具體的內(nèi)容介紹吧2022-01-01
java中Calendar與Date類型互相轉(zhuǎn)換的方法
這篇文章主要介紹了java中Calendar與Date類型互相轉(zhuǎn)換的方法,Calendar與Date類型是我們?nèi)粘i_(kāi)發(fā)中常用的兩種數(shù)據(jù)類型,它們用于不同的場(chǎng)景,兩者具有不同的方法,接下來(lái)通過(guò)實(shí)例給大家詳解,需要的朋友可以參考下2022-09-09
Spring實(shí)現(xiàn)Logback日志模板設(shè)置動(dòng)態(tài)參數(shù)功能
本文介紹如何在Spring應(yīng)用中實(shí)現(xiàn)Logback日志模板的動(dòng)態(tài)參數(shù)設(shè)置,通過(guò)設(shè)計(jì)traceId鏈路標(biāo)識(shí),將其動(dòng)態(tài)添加到日志輸出中,從而實(shí)現(xiàn)簡(jiǎn)易的鏈路追蹤功能,感興趣的朋友跟隨小編一起看看吧2024-11-11
對(duì)ArrayList和LinkedList底層實(shí)現(xiàn)原理詳解
今天小編就為大家分享一篇對(duì)ArrayList和LinkedList底層實(shí)現(xiàn)原理詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Java對(duì)int[]數(shù)組做新增刪除去重操作代碼
這篇文章主要介紹了Java里面對(duì)int[]數(shù)組做新增刪除去重實(shí)現(xiàn),這里記錄下使用int[]數(shù)組對(duì)數(shù)組進(jìn)行新增刪除去重等操作,用來(lái)更加了解java里面的集合類思想,需要的朋友可以參考下2023-10-10

