欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

學(xué)習(xí)筆記——JavaStream源碼學(xué)習(xí)-創(chuàng)新互聯(lián)

思路

先上一段代碼

目前創(chuàng)新互聯(lián)建站已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、郫都網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
ListuserList = new ArrayList<>();

        for (int i = 0; i< 10; i++) {userList.add(new User(i, "wtq", "1234"));
        }
        userList.stream()
                .filter(user ->user.getUserId() >3)
                .filter(user ->user.getUserId() >4)
                .forEach(System.out::println);

Java的stream流, 平時(shí)很常用的功能, 讓代碼變的更簡潔, 可讀性也更好, 但是完全沒有了解過它內(nèi)部的邏輯. 今天有時(shí)間自己嘗試梳理了一下源碼, 這也算是我第一次獨(dú)立分析源碼, 寫的不好還請見諒.

整體邏輯

先在前面總結(jié)一下整套流程的大體邏輯.
在學(xué)習(xí)stream的使用方法時(shí), 就了解到一些流操作分為中間操作終止操作.中間操作并不會(huì)觸發(fā)邏輯執(zhí)行, 真正觸發(fā)操作執(zhí)行是終止操作.
一段流操作中的中間操作在內(nèi)部使用AbstractPipeline被連接成雙向鏈表的結(jié)構(gòu), 并使用Sink保存具體的操作方式(如上面的過濾邏輯).
直到有一個(gè)中間操作對象調(diào)用了終止操作.終止操作需要實(shí)現(xiàn)TerminalOpSink. 由終止操作構(gòu)造Sink調(diào)用單向鏈表. 最終將Sink執(zhí)行鏈委托給Spliterator調(diào)用.
重要的類
AbstractPipeline : 雙向鏈表元素類
Sink : 操作鏈, 串聯(lián)整個(gè)流操作中的具體邏輯的類
Spliterator : 真正遍歷調(diào)用操作鏈的類
在這里插入圖片描述
在這里插入圖片描述
這里暫時(shí)聽不明白沒關(guān)系, 下面正式進(jìn)入代碼

讀代碼 stream()

從第一個(gè)方法開始分析.
在這里插入圖片描述
這個(gè)方法構(gòu)造了最初的Stream對象, 第一個(gè)參數(shù)是通過調(diào)用內(nèi)部方法獲取的.先不管這個(gè)參數(shù).
在這里插入圖片描述
點(diǎn)進(jìn)StreamSupport提供的方法, 可以發(fā)現(xiàn)這里的Stream對象的實(shí)際類型是ReferencePipeline的內(nèi)部類Head構(gòu)造了雙向鏈表的頭.

filter() 中間操作

注意, 這里filter()其實(shí)是由Head對象調(diào)用的, 注意搞清楚this的值.
這里創(chuàng)建了一個(gè)StatelessOp.
在這里插入圖片描述
繼續(xù)追溯構(gòu)造方法, 實(shí)際是調(diào)用了AbstractPipeline的構(gòu)造方法, 此時(shí)構(gòu)造對象的previousStage就是Head. 同時(shí)為previousStagenextStage賦值. 這時(shí)候, 雙向鏈表已經(jīng)有了兩個(gè)元素.
這里想象一下第二個(gè)filter運(yùn)行時(shí), 會(huì)將上一個(gè)filter的StatelessOp對象作為previousStage, 執(zhí)行相同的操作. 做完這些操作, 雙向鏈表里加入了第三個(gè)元素.
在這里插入圖片描述

foreach() 終止操作

此時(shí)終止操作是由最后一個(gè)中間操作調(diào)用
這里將終止操作的邏輯保存在ForEachOps對象中
在這里插入圖片描述
在這里插入圖片描述
終止操作調(diào)用最終評(píng)估方法, 將全部中間操作構(gòu)成的鏈表傳入方法
在這里插入圖片描述
繼續(xù)傳遞
在這里插入圖片描述
在這里插入圖片描述構(gòu)造Sink單向鏈表
在這里插入圖片描述
Sink鏈表傳遞給Spliterator
在這里插入圖片描述
為每個(gè)元素調(diào)用Sink操作鏈
在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站標(biāo)題:學(xué)習(xí)筆記——JavaStream源碼學(xué)習(xí)-創(chuàng)新互聯(lián)
本文來源:http://aaarwkj.com/article14/dddcge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、Google云服務(wù)器、網(wǎng)站營銷、用戶體驗(yàn)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
亚洲精品一区二区日本| 国产精品一区二区三区乱色| 日韩区一区二在线视频| 午夜福利成人在线免费观看| 2021亚洲精品午夜精品国产| 国产一区二区三区性色| 一区二区尤物区亚洲国产精品区| 97高清视频在线观看| 日韩高清有码一区二区| 亚洲av日韩av高潮| 国产原创av超爽剧情系列| 亚洲免费观看视频一区二区三区 | 日本东京一区二区三区| 成人激情视频在线网页| 婷婷综合伊人久久狠狠| 国产精品一区二区久久蜜桃麻豆 | 亚洲国产综合六月深深爱| 亚洲成人自拍在线视频| 亚洲精品国产精品乱码不| 国产剧情av色诱女教师| 国产成人av在线观看| 久久久之久亚州精品露出| 一区二区三区免费视频少妇| 日本东京热免一区二区| 日本福利写真在线观看| 不卡一区二区三区av电影| 日韩免费av在线观看| 蜜臀视频网站在线观看| 亚洲精品国产熟女高潮| 国语对白自拍视频在线播放| 国产乱码精品一区二区蜜臀| 亚洲精品乱码国产妇女毛片| 少妇内射呻吟中文字幕视频| 男女生做刺激性视频网站| 色噜噜狠狠狠久久综合一区| 久久国产欧美日韩精品| 欧美一区二区日韩一区二区| 国产女人高潮流白丝视频| 亚洲国产日朝欧美综合久久| 午夜精品久久久免费视频| 久久久久亚洲av成人网人|