StreamAPI多次消費一個stream代碼實例
StreamAPI中的stream不能被重復消費,一旦它被使用,stream就被關閉了,別的地方再消費它就會拋IllegalStateException:stream has already been operated upon or closed。
比如下面的代碼中,stream被消費了兩次,第二次消費時將會拋異常:
@Test
public void statistics() {
IntStream range = IntStream.range(0, 12);
OptionalInt min = range.min(); //第一次消費正常
System.out.println(min);
long count = range.count(); //第二次消費將報錯
System.out.println(count);
}
如何實在需要多次消費呢,通過Supplier來生產stream,每次調用supplier.get()獲取一個嶄新的stream對象,雖然對象是新的,但是每個stream中的數(shù)據是相同的,間接地實現(xiàn)了重復消費的語義:
@Test
public void statistics0() {
Supplier<IntStream> supplier= () -> IntStream.range(0, 12);
OptionalInt min = supplier.get().min(); //第一次消費正常
System.out.println(min);
long count = supplier.get().count(); //第二次消費正常
System.out.println(count);
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
解決mybatis 中collection嵌套collection引發(fā)的bug
這篇文章主要介紹了解決mybatis 中collection嵌套collection引發(fā)的bug,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Spring實現(xiàn)Logback日志模板設置動態(tài)參數(shù)功能
本文介紹如何在Spring應用中實現(xiàn)Logback日志模板的動態(tài)參數(shù)設置,通過設計traceId鏈路標識,將其動態(tài)添加到日志輸出中,從而實現(xiàn)簡易的鏈路追蹤功能,感興趣的朋友跟隨小編一起看看吧2024-11-11
對ArrayList和LinkedList底層實現(xiàn)原理詳解
今天小編就為大家分享一篇對ArrayList和LinkedList底層實現(xiàn)原理詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10

