Java8新增的Stream、Lambda特性極大的方便了平常中對集合數據的處理過程,代碼簡潔優雅。但同時也引入了一個問題–難於調試!。本文列舉了一些常見的Stream調試方法,供你們一塊兒學習探討。廢話很少說,我們開始!工具
數據準備學習
以下代碼就是咱們今天要研究的,比較簡單:開發工具
當咱們想要調試filter方法的數據處理過程時,可能會比較費勁,由於filter中使用的Lambda表達式來處理的業務邏輯。下面列舉了幾種調試方法供你們參考。插件
方法一:3d
咱們能夠將原來一行的Lambda表達式改寫爲多行的形式,這樣調試斷點就能夠打進去了。以下代碼,調試斷點能夠打到第10行,從而進行調試。調試
方法二:cdn
開發工具若是使用IDEA,在調試Lambda時斷點能夠選擇打到本行上仍是打到表達式上。blog
鼠標點擊78行添加斷點時,會彈出三個選項,分別是調試本行、調試本行中Lambda表達式、調試所有。開發
咱們選擇第二項,在調試的過程當中就能夠調試filter方法的Lambda表達式邏輯了。it
方法三:
咱們能夠將Lambda表達式換成方法引用進行調試,改寫程序爲:
首先咱們定義了一個工具類,裏面有一個靜態方法是用來作業務邏輯判斷的。
而後使用方法引用的方式來改寫程序。這樣就能夠在第11行中添加斷點進行調試了。
方法四:
IDEA提供了一個插件用來觀察Stream流的處理過程,叫作Java Stream Debugger。低版本的IDEA須要本身安裝,高版本的已經默認集成了。
打上斷點後,點擊Debug窗口的Trace Current Stream Chain圖標,便可顯示Stream處理的總體過程。方便咱們跟蹤每一個數據項的處理狀況。共提供了兩種查看模式:Split Mode(全局視角),Flat Mode(扁平視角)。
能夠看一個真實的例子:
全局視角下能夠看到這個Stream作了一些列的處理,而數據項通過每個環節的處理狀況都可以被清晰的展現。
方法五:
爲了方便觀察每一步的執行狀況,咱們能夠將每一步的執行結果利用peek方法進行打印。程序修改以下:
第10行添加的打印語句不會對Stream處理形成影響,以後輸出filter處理後的結果信息。千萬不要在生產環境這樣搞,會捱罵的!
總結
以上就是對調試Stream方法的總結,實際使用過程當中能夠靈活運用這幾種方式調試代碼。這樣不但能寫出優雅高效的代碼,還能保證沒有錯誤。