Stream流是JDK8新增的成員,允許以聲明性方式處理數據集合,可以把Stream流看作是遍歷數據集合的一個高級迭代器。
代碼以聲明性方式書寫:說明想要完成什么,而不是說明如何完成一個操作。
可以把幾個基礎操作連接起來,來表達復雜的數據處理的流水線,同時保持代碼清晰可讀。
從支持數據處理操作的源生成元素序列.數據源可以是集合,數組或IO資源。
從操作角度來看,流與集合是不同的. 流不存儲數據值; 流的目的是處理數據,它是關于算法與計算的。
如果把集合作為流的數據源,創建流時不會導致數據流動; 如果流的終止操作需要值時,流會從集合中獲取值; 流只使用一次。
流中心思想是延遲計算,流直到需要時才計算值。
流使用時一般包括三件事:
● 一個數據源(如集合)來執行一個查詢;
● 一個中間操作鏈,形成一條流的流水線
● 一個終端操作,執行流水線,生成結果