什么式Stream
流(Stream)是數據渠道,用於操作數據源(集合、數組等)所生成的元素序列。
集合講的是數據,流講的是計算
注意:
- Stream自己不會存儲元素
- Stream不會改變源對象。相反,他會返回一個持有結果的新Stream
- Stream操作是延遲執行的。意味着他會等到需要結果的時候才執行
Stream操作的三個步驟
- 創建Stream
一個數據源(如:集合、數組),獲取一個流 - 中間操作
一個中間操作鏈,對數據源的數據進行處理 - 終止操作(終端操作)
一個終止操作,執行中間操作鏈。並產生結果
示意圖如下:

創建Stream
- default Stream<E> stream():返回一個順序流
- default Stream<E> parallelStream():返回一個並行流
有數組創建流
static <T> Stream<T> stream(T[] array):返回一個流
由值創建流
public static<T> Stream<T> of(T… values):返回一個流
由函數創建流:創建無限流
- 迭代
public static<T> Stream<T> iterate(final T seed,final UnaryOperator<T> f)
- 生成
public static<T> Stream<T> generate(Supplier<T> s)
Stream的中間操作
多個中間操作可以連接起來形成一個流水線,除非流水線上觸發終止操作,否則中間操作不會執行任何處理!而在終止操作時一次性全部處理,稱為“惰性求值”



Stream的終止操作
終止操作會從流的流水線生成結果。其結果可以是任何不是流的值,例如List、Integer 甚至是void。




Collector接口中方法的實現決定了如何對流執行收集操作(如收集到List、Set、Map)。但是Collector實用類提供了很多靜態方法可以方便的收集常見實例


