1. 程式人生 > >JDK8新特性詳解-Stream流常用方法(二)

JDK8新特性詳解-Stream流常用方法(二)

### **Stream流的使用** 流操作是Java8提供一個重要新特性,它允許開發人員以宣告性方式處理集合,其核心類庫主要改進了對集合類的 API和新增Stream操作。Stream類中每一個方法都對應集合上的一種操作。將真正的函數語言程式設計引入到Java中,能 讓程式碼更加簡潔,極大地簡化了集合的處理操作,提高了開發的效率和生產力。 同時stream不是一種資料結構,它只是某種資料來源的一個檢視,資料來源可以是一個數組,Java容器或I/O channel等。在Stream中的操作每一次都會產生新的流,內部不會像普通集合操作一樣立刻獲取值,而是惰性 取值,只有等到使用者真正需要結果的時候才會執行。**並且對於現在呼叫的方法,本身都是一種高層次構件,與執行緒模型無關。因此在並行使用中,開發者們無需再去操 心執行緒和鎖了。Stream內部都已經做好了**。 ```Java 如果剛接觸流操作的話,可能會感覺不太舒服。其實理解流操作的話可以對比資料庫操作。把流的操作理解為對資料庫中 資料的查詢操作  集合 = 資料表 元素 = 表中的每條資料  屬性 = 每條資料的列 流API = sql查詢  ``` ## 流操作詳解 Stream流介面中定義了許多對於集合的操作方法,總的來說可以分為兩大類:中間操作和終端操作。 - 中間操作:會返回一個流,通過這種方式可以將多箇中間操作連線起來,形成一個呼叫鏈,從而轉換為另外 一個流。除非呼叫鏈後存在一個終端操作,否則中間操作對流不會進行任何結果處理。 - 終端操作:會返回一個具體的結果,如boolean、list、integer等。 **1、篩選** 對於集合的操作,經常性的會涉及到對於集中符合條件的資料篩選,Stream中對於資料篩選兩個常見的API: filter(過濾)、distinct(去重) **1.1基於filter()實現資料過** 該方法會接收一個返回boolean的函式作為引數,終返回一個包括所有符合條件元素的流。 案例:獲取所有年齡20歲以下的學生 ```Java /** * @author 我是七月呀 * @date 2020/12/22 */ public class FilterDemo { public static void main(String[] args) { //獲取所有年齡20歲以下的學生 A