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