IntelliJ IDEA中如何調(diào)試Java Stream操作
Stream操作是Java 8推出的一大亮點(diǎn)!雖然java.util.stream
很強(qiáng)大,但依然還是有很多開發(fā)者在實(shí)際工作中很少使用,其中吐槽最多的一個(gè)原因就是不好調(diào)試,一開始確實(shí)是這樣,因?yàn)閟tream這樣的流式操作在DEBUG的時(shí)候,是一行代碼,直接下一步的時(shí)候,其實(shí)一下就過去了好多操作,這樣我們就很難判斷到底是里面的哪一行出了問題。不過,現(xiàn)在的話,在強(qiáng)大的IDEA插件支持下,stream的調(diào)試其實(shí)也沒那么難了,下面就來學(xué)習(xí)一下在IDEA中如何調(diào)試stream操作吧。
插件:Java Stream Debugger
如果你用的IDEA版本比較新的話,這個(gè)插件已經(jīng)是自帶的了,就不需要安裝了。如果還沒安裝的話,就手工安裝一下,然后繼續(xù)下面的操作。
本文收錄在了我正在連載的《玩轉(zhuǎn)IDEA專欄》,該系列該用電子書的方式編寫,如果想要沉浸式閱讀學(xué)習(xí)的話,可以訪問Web版本:https://www.didispace.com/idea-tips/
調(diào)試Stream操作
視頻演示:點(diǎn)擊這里查看
先來看下面這樣的這段代碼:
public class StreamTest { @Test void test() { List<String> list = List.of("blog.didispace.com", "spring4all.com", "openwrite.cn", "www.didispace.com"); List<String> result = list.stream() .filter(e -> e.contains("didispace.com")) .filter(e -> e.length() > 17) .toList(); System.out.println(result); } }
這段代碼的邏輯是通過stream去過濾list集合中的元素,由于有兩個(gè)filter,所以當(dāng)出現(xiàn)問題的時(shí)候,可能不知道具體是哪個(gè)filter中出了問題。
借助強(qiáng)大的IDEA,我們?cè)谟龅絪tream的時(shí)候,只需要點(diǎn)擊下圖中的按鈕:
此時(shí)會(huì)彈出一個(gè)Stream操作的跟蹤窗口:
該窗口中的標(biāo)簽就是這個(gè)stream操作的每一步,我們可以通過點(diǎn)擊標(biāo)簽去查看每一步執(zhí)行前和執(zhí)行后的結(jié)果去判斷這里的filter是否執(zhí)行正確。
到此這篇關(guān)于IntelliJ IDEA中如何調(diào)試Java Stream操作的文章就介紹到這了,更多相關(guān)idea調(diào)試Java Stream操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于javassist進(jìn)行動(dòng)態(tài)編程過程解析
這篇文章主要介紹了基于javassist進(jìn)行動(dòng)態(tài)編程過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05基于SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件過程解析
這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Java多例Bean的應(yīng)用場(chǎng)景-easyExcel導(dǎo)入
EasyExcel 是一個(gè)基于 Java 的簡單、省內(nèi)存的讀寫 Excel 的開源項(xiàng)目。這篇文章主要介紹了用easyExcel導(dǎo)入Java Bean的應(yīng)用場(chǎng)景,感興趣的朋友可以參考閱讀2023-04-04Java數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級(jí)隊(duì)列(堆)圖文詳解
優(yōu)先級(jí)隊(duì)列是比棧和隊(duì)列更專用的結(jié)構(gòu),在多數(shù)情況下都非常有用,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級(jí)隊(duì)列(堆)的相關(guān)資料,需要的朋友可以參考下2022-03-03SpringBoot整合Drools的實(shí)現(xiàn)步驟
Drools是一個(gè)易于訪問企業(yè)策略、易于調(diào)整以及易于管理的開源業(yè)務(wù)規(guī)則引擎,符合業(yè)內(nèi)標(biāo)準(zhǔn),速度快、效率高。業(yè)務(wù)分析師或?qū)徍巳藛T可以利用它輕松查看業(yè)務(wù)規(guī)則,從而檢驗(yàn)是否已編碼的規(guī)則執(zhí)行所需的業(yè)務(wù)規(guī)則。本文將講述SpringBoot整合Drools的步驟2021-05-05Java 實(shí)戰(zhàn)范例之精美網(wǎng)上音樂平臺(tái)的實(shí)現(xiàn)
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+Springboot+ssm+mysql+maven+redis實(shí)現(xiàn)一個(gè)前后端分離的精美網(wǎng)上音樂平臺(tái),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11應(yīng)用Java泛型和反射導(dǎo)出CSV文件的方法
這篇文章主要介紹了應(yīng)用Java泛型和反射導(dǎo)出CSV文件的方法,通過一個(gè)自定義函數(shù)結(jié)合泛型與反射的應(yīng)用實(shí)現(xiàn)導(dǎo)出CSV文件的功能,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12Spring?Mvc中CommonsMultipartFile的特性實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于Spring?Mvc中CommonsMultipartFile特性的相關(guān)資料,SpringMVC擁有強(qiáng)大的靈活性,非侵入性和可配置性,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11