Java8系列--Java Stream入門篇(流的操作)
阿新 • • 發佈:2019-01-25
1 Stream介面
1.1 介面情況
java.util.stream介面下共有DoubleStream、LongStream、IntStream、Stream四個介面,如下圖所示:
1.2 流的分類和使用
其中,Stream介面定義了許多方法,大體可以分為兩類:
- 中間操作類
- 終端操作類
一般來說,流的使用可以概括為三件事:
- 一個數據源來執行一個查詢
- 一箇中間操作鏈,形成一條流的流水線
- 一個終端操作,執行流水線,並生成結果
1.3 結構圖
2 中間操作
中間操作類的返回的是另一個流,即其返回值型別是流Stream。
例如,filter或sorted方法連線起來可以形成一個查詢操作,除非流水線上觸發一個終端操作,否則不會執行任何處理。
總之,中間操作只是各種操作的一個順序上的聯合,它們操作的物件是流,產生的物件也是各種各樣的流,只有在終端操作之後才能顯示最終的操作結果。
流的中間操作常有以下幾種:
操作 | 型別 | 返回型別 | 操作引數 | 函式描述符 |
filter | 中間操作 | Stream T | Predicate T | T -> boolean |
map | 中間操作 | Stream R | Function T,R | T -> R |
limit | 中間操作 | Stream T | ||
sorted | 中間操作 | Stream T | Comparator T | (T,T) -> int |
distinct | 中間操作 | Stream T |
3 終端操作
流的終端操作會從流的流水線生成結果,其結果是任何不為流的值,比如List、Integer甚至是void。
常用的流的終端操作:
操作 | 型別 | 目的 |
forEach | 終端操作 | 消費流中的每個元素並對其應用Lambda。這一操作返回void |
count | 終端操作 | 返回流中元素的個數。這一操作返回long |
collect | 終端操作 | 把流歸約成一個集合,比如List、Map甚至是Integer。 |