idea除錯java8 stream流的小技巧

前言

開發工作中,沒有誰不會用到debug除錯吧?對於java8中stream流的除錯你們又是怎麼debug的呢?譬如下面這一段程式碼,你們是不是打個斷點,按F6一步一步的看呢?如果裡面的迴圈比較少的情況,這種debug還可以接受,如果迴圈比較多的話,可能心裡就有點煩了。

List collect = Stream。of(1, 2, 3, 4, 5, 6)。filter(i -> i % 2 == 0)。filter(i -> i > 3)。collect(Collectors。toList());

talk is cheap,show me the code

idea 除錯技巧

就拿上面那段程式碼做示例,我們在這段程式碼上打一個斷點,idea中會彈出幾個選項,我們就選擇行斷點,如圖1;

idea除錯java8 stream流的小技巧

圖1

接著以debug方式啟動,那麼斷點就會進來;再接著點選idea中 trace current stream chain 按鈕,如下圖2;

idea除錯java8 stream流的小技巧

圖2

這時我們就會看到圖3的樣子;

idea除錯java8 stream流的小技巧

圖3

其中,第一個框裡面的內容就是最原始的資料,第一個filter 就是過濾掉條件後符合的結果,見圖4;第二個filter就是以第一個filter過濾後的結果為原始資料再過濾的結果,見圖5;最後collect 就是最終得到的資料,見圖6。

idea除錯java8 stream流的小技巧

圖4

idea除錯java8 stream流的小技巧

圖5

idea除錯java8 stream流的小技巧

圖6

當然,我們可以點選flat mode 按鈕,這樣可以更直觀的觀察到資料的變化,見圖7;

idea除錯java8 stream流的小技巧

圖7

那有人說了,你這是簡單的資料型別,複雜的資料型別也能除錯嗎?

當然可以!道理都是一樣的。如下,現在集合中有一批學生,現在想篩選出名字中含字母s的並且年齡大於15的。

Student s1 = new Student(“zs”, 18); Student s2 = new Student(“ls”, 34); Student s3 = new Student(“ww”, 23); Student s4 = new Student(“wr”, 15); Student s5 = new Student(“ln”, 16); List list = new ArrayList<>(); list。add(s1); list。add(s2); list。add(s3); list。add(s4); list。add(s5); List stu = list。stream()。filter(s -> s。getName()。contains(“s”))。filter(s -> s。getAge() > 15)。distinct()。collect(Collectors。toList()); System。out。println(stu);

在13行這裡打斷點,debug執行後,開啟流的追蹤,可以看到圖8的結果。

idea除錯java8 stream流的小技巧

圖8

結語

不得不說,idea有的功能確實非常的好用,據說2021版的又添加了nb的功能,你嚐鮮了嗎?

生活不只有無窮盡的coding,還應該有點不一樣的技巧[呲牙]。

關注小編,與你一同學習成長。