Java8新特性:Stream介紹和總結


什么式Stream

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

  1. Stream自己不會存儲元素
  2. Stream不會改變源對象。相反,他會返回一個持有結果的新Stream
  3. Stream操作是延遲執行的。意味着他會等到需要結果的時候才執行

Stream操作的三個步驟

  • 創建Stream
    一個數據源(如:集合、數組),獲取一個流
  • 中間操作
    一個中間操作鏈,對數據源的數據進行處理
  • 終止操作(終端操作)
    一個終止操作,執行中間操作鏈。並產生結果

示意圖如下:
在這里插入圖片描述

創建Stream

  1. default Stream<E> stream():返回一個順序流
  2. 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實用類提供了很多靜態方法可以方便的收集常見實例
在這里插入圖片描述
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM