IntelliJ IDEA中如何調(diào)試Java Stream操作
Stream操作是Java 8推出的一大亮點(diǎn)!雖然java.util.stream很強(qiáng)大,但依然還是有很多開(kāi)發(fā)者在實(shí)際工作中很少使用,其中吐槽最多的一個(gè)原因就是不好調(diào)試,一開(kāi)始確實(shí)是這樣,因?yàn)閟tream這樣的流式操作在DEBUG的時(shí)候,是一行代碼,直接下一步的時(shí)候,其實(shí)一下就過(guò)去了好多操作,這樣我們就很難判斷到底是里面的哪一行出了問(wèn)題。不過(guò),現(xiàn)在的話,在強(qiáng)大的IDEA插件支持下,stream的調(diào)試其實(shí)也沒(méi)那么難了,下面就來(lái)學(xué)習(xí)一下在IDEA中如何調(diào)試stream操作吧。
插件:Java Stream Debugger

如果你用的IDEA版本比較新的話,這個(gè)插件已經(jīng)是自帶的了,就不需要安裝了。如果還沒(méi)安裝的話,就手工安裝一下,然后繼續(xù)下面的操作。
本文收錄在了我正在連載的《玩轉(zhuǎn)IDEA專(zhuān)欄》,該系列該用電子書(shū)的方式編寫(xiě),如果想要沉浸式閱讀學(xué)習(xí)的話,可以訪問(wèn)Web版本:https://www.didispace.com/idea-tips/

調(diào)試Stream操作
視頻演示:點(diǎn)擊這里查看
先來(lái)看下面這樣的這段代碼:
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);
}
}這段代碼的邏輯是通過(guò)stream去過(guò)濾list集合中的元素,由于有兩個(gè)filter,所以當(dāng)出現(xiàn)問(wèn)題的時(shí)候,可能不知道具體是哪個(gè)filter中出了問(wèn)題。
借助強(qiáng)大的IDEA,我們?cè)谟龅絪tream的時(shí)候,只需要點(diǎn)擊下圖中的按鈕:

此時(shí)會(huì)彈出一個(gè)Stream操作的跟蹤窗口:

該窗口中的標(biāo)簽就是這個(gè)stream操作的每一步,我們可以通過(guò)點(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)文章希望大家以后多多支持腳本之家!
- 搭建RocketMQ在本地IDEA開(kāi)發(fā)調(diào)試環(huán)境教程
- Idea中tomcat啟動(dòng)源碼調(diào)試進(jìn)入到tomcat內(nèi)部進(jìn)行調(diào)試的方法
- IDEA調(diào)試功能使用總結(jié)(step?over/step?into/force?step?into/step?out)
- 自帶IDEA插件的阿里開(kāi)源診斷神器Arthas線上項(xiàng)目BUG調(diào)試
- IDEA中Debug調(diào)試VUE前端項(xiàng)目調(diào)試JS只需兩步
- 使用Idea調(diào)試RocketMQ源碼教程
相關(guān)文章
springboot關(guān)閉druid監(jiān)控 druid2改配置文件無(wú)效的解決
這篇文章主要介紹了springboot關(guān)閉druid監(jiān)控 druid2改配置文件無(wú)效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
Java利用opencv實(shí)現(xiàn)用字符展示視頻或圖片的方法
這篇文章主要介紹了Java利用opencv實(shí)現(xiàn)用字符展示視頻或圖片的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
詳解Spring MVC攔截器實(shí)現(xiàn)session控制
這篇文章主要介紹了詳解Spring MVC攔截器實(shí)現(xiàn)session控制,使用session監(jiān)聽(tīng),重復(fù)登錄后,強(qiáng)制之前登錄的session過(guò)期。有興趣的可以了解一下。2017-01-01
SpringBoot2.0解決Long型數(shù)據(jù)轉(zhuǎn)換成json格式時(shí)丟失精度問(wèn)題
這篇文章主要介紹了SpringBoot2.0解決Long型數(shù)據(jù)轉(zhuǎn)換成json格式時(shí)丟失精度問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Java并發(fā)編程 interrupt()方法示例詳解
interrrupt()方法可以用來(lái)打斷正在運(yùn)行的線程,也可以打斷sleep()、wait()、join()情況下的線程,但是這些情況下被打斷線程的打斷標(biāo)記不同,這篇文章主要介紹了Java并發(fā)編程 interrupt()方法示例詳解,需要的朋友可以參考下2023-06-06
使用proguard對(duì)maven構(gòu)建的springboot項(xiàng)目進(jìn)行混淆方式
文章介紹了如何使用ProGuard對(duì)Maven構(gòu)建的Spring Boot項(xiàng)目進(jìn)行混淆,并解決混淆后可能遇到的版本兼容性問(wèn)題和類(lèi)名沖突問(wèn)題,主要步驟包括下載高版本的ProGuard、配置POM文件、添加ProGuard配置文件、修改Spring Boot啟動(dòng)文件以避免類(lèi)名沖突2024-11-11
springboot:接收date類(lèi)型的參數(shù)方式
這篇文章主要介紹了springboot:接收date類(lèi)型的參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10

