這篇文章主要介紹“Java Steam的用法”,在日常操作中,相信很多人在Java Steam的用法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java Steam的用法”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、馬龍網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、購物商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為馬龍等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
Java Stream 已經(jīng)出現(xiàn)很長時間了,但很多Java程序員還是不理解它的工作方式。
不會 Stream 不要緊,我們開發(fā)的時候可以不用 Stream,但理解 Stream 是咋回事還是非常必要的,至少得能看懂別人代碼中的 Steam 是吧。
下面就通過一段代碼,逐條說明每行代碼的含義,然后再對照一下不使用 Stream 的用法,之后就可以輕松理解 Stream 的用法了。
這段 Stream 代碼共有 5 行,下面看每一行都是什么意思。
第一行我們分成2部分來看,一是內(nèi)部的 Lambda 表達式:
num -> num + 4
這就是一個非常簡單的方法,等價于:
int xxx(int num){ return num + 4; }
傳入?yún)?shù) num,然后返回 +4 后的結(jié)果。
第2部分是 Stream.iterate() 方法,此方法會創(chuàng)建一個無限的流,第一個參數(shù) “4” 就是流的起點,第二個參數(shù) Lambda 表達式用來生產(chǎn)后續(xù)的流元素。
那么第一行聯(lián)合起來的意思就是,從4開始,之后的每個流元素都是持續(xù) “+4” 計算出來,產(chǎn)生的流就是這個樣子:
4, 8, 12, 16, 20, 24, 28, …
limit() 的作用和 SQL 的 limit 一樣,都是用來限制數(shù)量的,Stream.iterate() 創(chuàng)建了無限流,通過 limit 將其變?yōu)榱擞邢薜牧?,限制了流中元素的個數(shù)。
例如參數(shù) total 值為 5,那么流的樣子就是:
4, 8, 12, 16, 20
第三行是 map 方法,其中還是一個 Lambda 表達式。
map 的作用是 ”變換“,把流中每個元素都用其中的 Lambda 表達式進行計算,得到一個新的元素,放入新的流中。
這個 Lambda 表達式的意思是計算平方值,那么流就變?yōu)椋?/p>
4*4, 8*8, 12*12, 16*16, 20*20 => 16, 64, 144, 256, 400
第四行 filter 的作用是對流元素進行過濾,其中 Lambda 表達式返回的是一個 Boolean 值,返回 True 的放入流中,否則丟棄。
這里是判斷元素是否可以被 10 整除,流中只有 400 符合條件,那么流就變?yōu)椋?/p>
400
第五行 reduce() 方法是最后的歸納總結(jié),它有2個參數(shù)。
第一個參數(shù)可以理解為基礎(chǔ)值,第二個參數(shù)是一個操作指令。
這里的意思就是:
從0開始,計算流中所有元素的總和,返回最終的累加值。
所以,這段 Stream 返回的結(jié)果就是 400。
為了更加便于理解,我們把這段 Stream 代碼轉(zhuǎn)換為普通寫法:
下面把2段代碼對照一下。
Steam.iterate() 第一個參數(shù)起始值對應(yīng) for 中的起始值,Steam.iterate() 第二個參數(shù) Lambda 表達式,對應(yīng) for 中的每次循環(huán)操作。
limit() 限制流中元素數(shù)量,對應(yīng) for 循環(huán)中的結(jié)束條件,因為 for 里面需要限制的是最大數(shù),所以要用元素個數(shù)??4來計算一下。
map() 對應(yīng) for 內(nèi)部的平方計算。
filter() 過濾方法對應(yīng) for 內(nèi)部的 if 判斷。
reduce() 匯總方法對應(yīng)了3行代碼:
定義匯總變量及其初始值
循環(huán)中累加
返回最終結(jié)果。
通過前面的逐條解析,以及代碼對照是不是就很好理解 Steam 啦,希望對你有所幫助。
到此,關(guān)于“Java Steam的用法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
文章名稱:JavaSteam的用法
標題路徑:http://weahome.cn/article/gjhidd.html