java8中一個極其強悍的新特性Stream(非常實用)

java8中有兩個非常有名的改進,一個是Lambda表達式,一個是Stream。如果我們瞭解過函數式編程的話,都知道Stream真正把函數式編程的風格引入到了java中。這篇文章由簡入繁逐步介紹Stream。

一、Stream是什麼

從名字來看,Stream就是一個流,他的主要作用就是對集合數據進行查找過濾等操作。有點類似於SQL的數據庫操作。一句話來解釋就是一種高效且易用的數據處理方式。大數據領域也有一個Steam實時流計算框架,不過和這個可不一樣。別搞混了。

舉個例子吧,比如說有一個集合Student數據,我們要刪選出學生名字為“張三”的學生,或者是找出所有年齡大於18歲的所有學生。此時我們就可以直接使用Stream來篩選。當然了這只是給出了其中一個例子。Stream還有很多其他的功能。

Stream和Collection的區別就是:Collection只是負責存儲數據,不對數據做其他處理,主要是和內存打交道。但是Stream主要是負責計算數據的,主要是和CPU打交道。現在明白了吧。

二、Stream語法講解

Stream執行流程很簡單,主要有三個,首先創建一個Stream,然後使用Stream操作數據,最後終止Stream。有點類似於Stream的生命週期。下面我們根據其流程來一個一個講解。

1、前提準備

首先我們創建一個Student類,以後我們每次都是操作這個類

java8中一個極其強悍的新特性Stream(非常實用)

然後下面我們再創建一個StudentData類,用於獲取其數據

java8中一個極其強悍的新特性Stream(非常實用)

我們只需要把方法變成static類型的就可以了。

2、創建一個Stream

方式一:通過一個集合創建Stream

java8中一個極其強悍的新特性Stream(非常實用)

方式二:通過一個數組創建Stream

java8中一個極其強悍的新特性Stream(非常實用)

方式三:通過Stream.of

java8中一個極其強悍的新特性Stream(非常實用)

方式四:創建一個無限流

java8中一個極其強悍的新特性Stream(非常實用)

3、使用Stream操作數據

操作1:篩選和切片

java8中一個極其強悍的新特性Stream(非常實用)

操作2:映射

java8中一個極其強悍的新特性Stream(非常實用)

操作3:排序

java8中一個極其強悍的新特性Stream(非常實用)

4、終止Stream

操作1:匹配和查找

java8中一個極其強悍的新特性Stream(非常實用)

操作2:歸約

java8中一個極其強悍的新特性Stream(非常實用)

操作3:收集

java8中一個極其強悍的新特性Stream(非常實用)

stream基本的語法就是這樣,你會發現Stream就像是一個工具一樣,可以幫我們分析處理數據,極其的好用,但是目前還不知道其效率如何。根據網上一位大佬的內存時間分析,其實在數據量比較龐大的時候,Stream可以為我們節省大量的時間,數據量小的時候並不明顯。


分享到:


相關文章: