一文學會Stream的常用方法

本文旨在說明Java中Stream API的常用方法。

1、概述

相信學習Java語言開發的朋友們對Java8(又叫jdk1。8)都不陌生,Java8是oracle公司於2014年3月釋出,雖然目前Java版本在不斷更迭,目前最新版本應該已經到了Java19,但還是有不少企業在開發、生產過程中使用jdk1。8,本文對jdk1。8不做過多的介紹,有興趣的朋友可以自行百度瞭解,本文主要是圍繞jdk1。8中的新特性Stream的使用展開,瞭解什麼是Stream流,Stream流有哪些特性,stream操作的分類以及透過程式碼學會常見的API的使用。

2、Stream流簡介

Stream是java8的新特性,也是java8的一大亮點,和java。io中的inputstream、outputstream是不一樣的概念,它是對集合和陣列物件功能的增強(專注於對集合物件和陣列進行非常高效的遍歷操作)。它具有幾個特性:不儲存資料;不改變資料來源;具有延遲執行的特性,只有呼叫終端操作時,中間操作才會執行。

當我們使用Stream流,通常基於獲取一個數據源(source)→ 資料轉換 → 執行操作獲取想要的結果這個步驟,每次轉換原有 Stream 物件不改變,返回一個新的 Stream 物件(可以有多次轉換)。

當然說到Stream流,不得不提一嘴Lambda 表示式,Lambda 表示式也是Java8中出現的,函數語言程式設計使程式碼更加簡潔,極大的提高了程式設計效率和程式可讀性(這裡的可讀性建立在理解的基礎上)。

3、Stream操作分類

Stream的操作大致可以分為中間操作和終結操作兩大類,其中中間操作分為無狀態操作和有狀態操作,總結操作分為短路操作和非短路操作。

·

無狀態操作:元素的處理不受之前元素的影響。

·

有狀態操作:該操作只有拿到所有元素之後才能繼續。

·

短路操作:遇到某些符合條件的元素直接得到最終結果。

·

非短路操作:必須處理完所有元素才能得到最終結果。

一文學會Stream的常用方法

4、Stream的使用(API)

好了說了這麼多廢話,可能表述的也不一定那麼準確,可能很多人也不會細看,

好吧,下面還是透過程式碼來直觀的瞭解一些開發過程中經常使用的API吧。

看程式碼之前,先了解下Optional類,Optional類是一個可以為null的容器物件。如果值存在則isPresent方法會返回true,呼叫get方法會返回該物件。

防止有些不熟悉的朋友對實體類和Map型別的處理有疑問,我先定義一個實體類Person和Map,針對List

和List

的操作,後續的操作都會基於這兩個List分別進行。

一文學會Stream的常用方法

一文學會Stream的常用方法

4。1、 流的建立

一文學會Stream的常用方法

4。2、forEach

一文學會Stream的常用方法

4。2、find

一文學會Stream的常用方法

4。3、match

一文學會Stream的常用方法

4。3、filter

filter其實在上述幾個例子中均有所使用,即篩選

一文學會Stream的常用方法

4。4、max/min/count

一文學會Stream的常用方法

4。5、map和peek

一文學會Stream的常用方法

4。6、collect

一文學會Stream的常用方法

一文學會Stream的常用方法

4。7、sorted

一文學會Stream的常用方法

4。8、distinct/limit/skip

一文學會Stream的常用方法

上文僅是介紹了部分平時開發中經常需要使用到的方法,拋磚引玉,可自行透過程式碼實現聯絡,若遇到本文沒有介紹的方法,可以透過官方API檢視學習。