1. 程式人生 > 其它 >「快速入門」Java8 -關於Stream

「快速入門」Java8 -關於Stream

技術標籤:java

瞭解Stream

Java8中有兩大最為重要的改變。第一個是 Lambda 表示式;另外一 個則是 Stream API(java.util.stream.*)。
Stream 是 Java8 中處理集合的關鍵抽象概念,它可以指定你希望對集合進行的操作,可以執行非常複雜的查詢、過濾和對映資料等操作。 使用Stream API對集合資料進行操作,就類似於使用 SQL 執行的資料庫查詢。也可以使用 Stream API 來並行執行操作。簡言之,Stream API提供了一種高效且易於使用的處理資料的方式。

流(Stream) 到底是什麼呢?
是資料渠道,用於操作資料來源(集合、陣列等)所生成的元素序列。 “集合講的是資料,流講的是計算!”

注意:
①Stream 自己不會儲存元素。
②Stream 不會改變源物件。相反,他們會返回一個持有結果的新Stream。
③Stream 操作是延遲執行的。這意味著他們會等到需要結果的時候才執行

Stream 的操作三個步驟

  • 建立 Stream
    一個數據源(如:集合、陣列),獲取一個流
  • 中間操作
    一箇中間操作鏈,對資料來源的資料進行處理
  • 終止操作(終端操作)
    一個終止操作,執行中間操作鏈,併產生結果

Java8 中的 Collection 介面被擴充套件,提供了 兩個獲取流的方法:

default Stream stream() : 返回一個順序流
default Stream parallelStream() : 返回一個並行流

流的建立

由陣列建立流

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

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

過載形式,能夠處理對應基本型別的陣列:

public static IntStream stream(int[] array)
public static LongStream stream(long[] array)
public static DoubleStream stream(double[] array)

由值建立

可以使用靜態方法 Stream.of(), 通過顯示值 建立一個流。它可以接收任意數量的引數。

public static<T> Stream<T> of(T... values) : 返回一個流

由函式建立流:建立無限流

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

迭代
public static Stream iterate(final T seed, final UnaryOperator f)
生成
public static Stream generate(Supplier s) :