1. 程式人生 > >【Java8新特性】面試官問我:Java8中建立Stream流有哪幾種方式?

【Java8新特性】面試官問我:Java8中建立Stream流有哪幾種方式?

## 寫在前面 > 先說點題外話:不少讀者工作幾年後,仍然在使用Java7之前版本的方法,對於Java8版本的新特性,甚至是Java7的新特性幾乎沒有接觸過。真心想對這些讀者說:你真的需要了解下Java8甚至以後版本的新特性了。 ># > 今天,一名讀者出去面試,面試官問他:說說Java8中建立Stream流有哪幾種方式?他竟然沒回答上來!! ## Stream概述 Java8中有兩大最為重要的改變。第一個是 Lambda 表示式;另外一個則是 Stream API(java.util.stream.*)。 Stream 是 Java8 中處理集合的關鍵抽象概念,它可以指定你希望對集合進行的操作,可以執行非常複雜的查詢、過濾和對映資料等操作。使用Stream API 對集合資料進行操作,就類似於使用 SQL 執行的資料庫查詢。也可以使用 Stream API 來並行執行操作。簡而言之,Stream API 提供了一種高效且易於使用的處理資料的方式。 ## 何為Stream? **流(Stream) 到底是什麼呢?** > 可以這麼理解流:流就是資料渠道,用於操作資料來源(集合、陣列等)所生成的元素序列。 “集合講的是資料,流講的是計算! ” **注意:** ①Stream 自己不會儲存元素。 ②Stream 不會改變源物件。相反,他們會返回一個持有結果的新Stream。 ③Stream 操作是延遲執行的。這意味著他們會等到需要結果的時候才執行。 ## Stream操作步驟 **1.建立 Stream** 一個數據源(如: 集合、陣列), 獲取一個流。 **2.中間操作** 一箇中間操作鏈,對資料來源的資料進行處理。 **3.終止操作(終端操作)** 一個終止操作,執行中間操作鏈,併產生結果 。 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200525225333187.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2wxMDI4Mzg2ODA0,size_16,color_FFFFFF,t_70#pic_center) ## 如何建立Stream流? 這裡,建立測試類TestStreamAPI1,所有的操作都是在TestStreamAPI1類中完成的。 **(1)通過Collection系列集合提供的stream()方法或者parallelStream()方法來建立Stream。** 在Java8中,Collection 介面被擴充套件,提供了兩個獲取流的預設方法,如下所示。 ```java defaul