首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

技术分享:轻松调试Stream

Java8新增的Stream、Lambda特性极大的方便了日常中对集合数据的处理过程,代码简洁优雅。但同时也引入了一个问题–难于调试!。本文列举了一些常见的Stream调试方法,供大家一起学习探讨。废话不多说,咱们开始!

数据准备

如下代码就是我们今天要研究的,比较简单:

当我们想要调试filter方法的数据处理过程时,可能会比较费劲,因为filter中使用的Lambda表达式来处理的业务逻辑。下面列举了几种调试方法供大家参考。

方法一:

我们可以将原来一行的Lambda表达式改写为多行的形式,这样调试断点就可以打进去了。如下代码,调试断点可以打到第10行,从而进行调试。

方法二:

开发工具如果使用IDEA,在调试Lambda时断点可以选择打到本行上还是打到表达式上。

鼠标点击78行添加断点时,会弹出三个选项,分别是调试本行、调试本行中Lambda表达式、调试全部。

我们选择第二项,在调试的过程中就可以调试filter方法的Lambda表达式逻辑了。

方法三:

我们可以将Lambda表达式换成方法引用进行调试,改写程序为:

首先我们定义了一个工具类,里面有一个静态方法是用来做业务逻辑判断的。

然后使用方法引用的方式来改写程序。这样就可以在第11行中添加断点进行调试了。

方法四:

IDEA提供了一个插件用来观察Stream流的处理过程,叫做Java Stream Debugger。低版本的IDEA需要自己安装,高版本的已经默认集成了。

打上断点后,点击Debug窗口的Trace Current Stream Chain图标,即可显示Stream处理的整体过程。方便我们跟踪每个数据项的处理情况。共提供了两种查看模式:Split Mode(全局视角),Flat Mode(扁平视角)。

可以看一个真实的例子:

全局视角下可以看到这个Stream做了一些列的处理,而数据项经过每一个环节的处理情况都能够被清晰的展示。

方法五:

为了方便观察每一步的执行情况,我们可以将每一步的执行结果利用peek方法进行打印。程序修改如下:

第10行添加的打印语句不会对Stream处理造成影响,之后输出filter处理后的结果信息。千万不要在生产环境这样搞,会挨骂的!

总结

以上就是对调试Stream方法的总结,实际使用过程中可以灵活运用这几种方式调试代码。这样不但能写出优雅高效的代码,还能保证没有错误。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191016A0DLOM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券