jdk8 stream介紹
Stream(流)是一個來自數(shù)據(jù)源的元素隊列并支持聚合操作
元素是特定類型的對象,形成一個隊列。 Java中的Stream并不會存儲元素,而是按需計算。
數(shù)據(jù)源 流的來源。 可以是集合,數(shù)組,I/O channel,jdk8官方網(wǎng)站 產(chǎn)生器generator 等。
聚合操作 類似SQL語句一樣的操作, 比如filter, map, reduce, find, match, sorted等。
和以前的Collection操作不同, Stream操作還有兩個基礎(chǔ)的特征:
Pipelining: 中間操作都會返回流對象本身。 這樣多個操作可以串聯(lián)成一個管道, 如同流式風(fēng)格(fluent style)。jdk8官網(wǎng)(https://www.oracle.com/java) 這樣做可以對操作進(jìn)行優(yōu)化, 比如延遲執(zhí)行(laziness)和短路( short-circuiting)。
內(nèi)部迭代: 以前對集合遍歷都是通過Iterator或者For-Each的方式, 顯式的在集合外部進(jìn)行迭代, 這叫做外部迭代。 Stream提供了內(nèi)部迭代的方式, 通過訪問者模式(Visitor)實現(xiàn)。
流的常用創(chuàng)建方法: