答應我!下次開發就開始用 java Stream

Java8中有兩大最為重要的改變。第一個是 Lambda 表達式

;另外一個則是 Stream API

Stream API ( java.util.stream) 把真正的函數式編程風格引入到Java中。這是目前為止對Java類庫最好的補充,因為Stream API可以極大提供Java程序員的生產力,讓程序員寫出高效率、乾淨、簡潔的代碼。

Stream 是 Java8 中處理集合的關鍵抽象概念,它可以指定你希望對集合進行的操作,可以執行非常複雜的查找、過濾和映射數據等操作。 使用Stream API 對集合數據進行操作,就類似於使用 SQL 執行的數據庫查詢。也可以使用 Stream API 來並行執行操作。簡言之,Stream API 提供了一種高效且易於使用的處理數據的方式。

Stream到底是什麼呢?

是數據渠道,用於操作數據源(集合、數組等)所生成的元素序列。“集合講的是數據,Stream流講的是計算!”

注意:

①Stream 自己不會存儲元素。

②Stream 不會改變源對象。相反,他們會返回一個持有結果的新Stream。

③Stream 操作是延遲執行的。這意味著他們會等到需要結果的時候才執行。

Stream 的操作三個步驟

l1- 創建 Stream

一個數據源(如:集合、數組),獲取一個流

l2- 中間操作

一箇中間操作鏈,對數據源的數據進行處理

l3- 終止操作(終端操作)

一旦執行終止操作,就執行中間操作鏈,併產生結果

創建 Stream方式一:通過集合

Java8 中的 Collection 接口被擴展,提供了兩個獲取流的方法:

ldefault Stream stream() : 返回一個順序流

ldefault Stream parallelStream() : 返回一個並行流

創建 Stream方式二:通過

Java8 中的 Arrays 的靜態方法 stream() 可以獲取數組流:

lstatic Stream stream(T[] array): 返回一個流

重載形式,能夠處理對應基本類型的數組:

lpublic static IntStream stream(int[] array)

lpublic static LongStream stream(long[] array)

public static DoubleStream stream(double[] array)

創建 Stream方式三:通過Stream的of()

可以調用Stream類靜態方法 of(), 通過顯示值創建一個流。它可以接收任意數量的參數。

lpublic static Stream of(T... values) : 返回一個流

創建 Stream方式四:創建無限流

可以使用靜態方法 Stream.iterate() 和 Stream.generate(), 創建無限流。

l迭代

public static Stream iterate(final T seed, final UnaryOperator f)

l生成

public static Stream generate(Supplier s) :

Stream 的中間操作

多個中間操作可以連接起來形成一個

流水線,除非流水線上觸發終止操作,否則中間操作不會執行任何的處理!而在終止操作時一次性全部處理,稱為“惰性求值”

1-篩選與切片

答應我!下次開發就開始用 java Stream

2-映 射

答應我!下次開發就開始用 java Stream

3-排序

答應我!下次開發就開始用 java Stream

Stream 的終止操作

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

•流進行了終止操作後,不能再次使用。

1-匹配與查找

答應我!下次開發就開始用 java Stream
答應我!下次開發就開始用 java Stream

2-歸約

備註:map 和 reduce 的連接通常稱為 map-reduce 模式,因 Google 用它來進行網絡搜索而出名。

答應我!下次開發就開始用 java Stream

3-收集

答應我!下次開發就開始用 java Stream

Collector 接口中方法的實現決定了如何對流執行收集的操作(如收集到 List、Set、Map)。

另外, Collectors 實用類提供了很多靜態方法,可以方便地創建常見收集器實例,具體方法與實例如下表:

答應我!下次開發就開始用 java Stream
答應我!下次開發就開始用 java Stream

以上就是一個簡單的總結,沒有討論他的原理和一些講解,後期再來就可以,感謝您的關注。我們下期再見。


分享到:


相關文章: