List中Stream和Lambda表示式

2021-10-02 08:26:51 字數 2103 閱讀 9585

建立

通過陣列建立

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...