建立
通過陣列建立
arrays.stream;
通過集合建立//普通流
集合物件.
stream()
;//並行流
集合物件.
parallelstream()
;
建立空的流stream.
empty()
;
建立無限流//建立無限流,通過limit提取指定大小
stream.
generate
()
建立規律的無線流stream.
iterate
()
方法
collect(tolist())&filter
collect(tolist())的作用是通過乙個stream物件生成list物件,當流執行了collect方法才會觸發之前的轉換操作
filter用於過濾stream中的元素,filter方法是乙個高階函式,接受乙個函式介面作為引數,此高階函式返回乙個boolean值,返回true的元素會被保留下來
高階函式:接收或者返回乙個函式介面的函式成為高階函式
函式介面:只包含乙個函式的介面稱為函式介面
mapmap函式的作用是將流中的乙個值轉換成乙個新值,即將乙個list轉換為另乙個list,可以更改list中的值(轉換流,將一種型別的流轉換為另外一種流)
floatmap:將多個stream連線成乙個stream
求list的最大值或者最小值,需要指定對比依據
從一組值中生成乙個新的值,reduce可以做為集合的累加或者減少
對流進行排序
findfirst
查詢第乙個
findany
找到所有匹配的元素,對並行流十分有效,只要在任何乙個片段中發現第乙個匹配元素就會結束整個運算
anymatch
是否含有匹配元素,如果含有匹配元素則返回true
optional型別
通常聚合操作會返回乙個optional型別,optional表示乙個安全的指定結果型別,安全是指避免直接呼叫返回型別的null值而造成空指標異常,呼叫optional.ifpresent()可以判斷返回值型別是否為空,或者直接呼叫ifpresent(consumer super t> consumer)在結果不為空時進行消費操作,呼叫optional.get()
collect
收集結果
collect(tolist()),collect(toset()),collect(tomap(student::getname,student::getscore,(s,a)->s+a))
生成指定型別
collect(tocollection(hashset::new));
統計collect(collectors.summarizingint(student::getscore));
分組和分片(分組和分片的意義,將collect的結果集展示為map的形式)
分組:collect(groupingby(student::getname));
//如果只有兩類,使用partitioningby會比groupingby更有效率
分片:collect(partitioningby(x->x.getscore()>50));
List的Stream流操作
stream流 stream 中文稱為 流 通過將集合轉換為這麼一種叫做 流 的元素序列,通過宣告性方式,能夠對集合中的每個元素進行一系列並行或序列的流水線操作。函式式程式設計帶來的好處尤為明顯。這種 更多地表達了業務邏輯的意圖,而不是它的實現機制。易讀的 也易於維護 更可靠 更不容易出錯。面對一對...
List的Stream流操作
stream 中文稱為 流 通過將集合轉換為這麼一種叫做 流 的元素序列,通過宣告性方式,能夠對集合中的每個元素進行一系列並行或序列的流水線操作。函式式程式設計帶來的好處尤為明顯。這種 更多地表達了業務邏輯的意圖,而不是它的實現機制。易讀的 也易於維護 更可靠 更不容易出錯。面對一對多結構,查詢主實...
Stream和Reader Writer物件學習
1.stream是所有流的抽象基類。流是位元組序列的抽象概念,例如檔案 輸入 輸出裝置 內部程序通訊管道或者 tcp ip 套接字。stream類及其派生類提供這些不同型別的輸入和輸出的一般檢視,使程式設計師不必了解作業系統和基礎裝置的具體細節。常用的stream的子類有 system.io.fil...