位置:学校首页 > 学校动态>国内软件开发培训品牌一览表
达内教育,2014年4月3日成功在美国纳斯达克上市,致力于面向IT互联网行业,培养软件开发工程师、测试工程师、系统管理员、智能硬件工程师、UI设计师、网络营销工程师等,为不影响您的学习,来校区前请先电话或QQ咨询,方便我校安排相关课程的专业老师为您解答~接下来达内教育的小编为您分享,Java8使用Stream的缺点是调试困难?
来,我们再看下Java8中的实现代码:
System.out.println("使用Java 8:");
count=strings.stream().filter(string->string.isEmpty()).count();
System.out.println("空字符串数量为:"+count);
就一行代码,我们需要怎么打断点调试呢?
如上图所示,在Stream代码的这一行打断点,如果你选择Line,那么就无法调试,跟踪不到Stream在管道中传输以及在管道的节点上进行的filter处理动作。
选择断点加在lambda表达式上,然后使用单步调试才可以进入,不得不说IDEA是真的强????。我印象中之前使用2019版本打断点是没有出现这个提示的,反正2020以上的版本肯定都有了,打断点的时候就会提示选择。
虽然可以调试,问题是可以解决了,不过还不够强,接下来大家别眨眼睛,一个更强大、更直观的视图,帮助我们一眼就能看出Stream的处理过程。
可视化追踪Stream链
步骤还是上面的一样,打断点,以Debug的方式运行程序,区别在于打断点时无需选择是行端点还是lambda表达式上面,随便选择只要打上断点即可:
点击图中按钮,就会自动打开一个Stream处理流程的视图,整个处理过程变得一目了然,视图分为三分部,左边是初始集合的数据,中间是Stream处理过滤后的数据,右边是较终操作得到的处理结果。
这样Java8 Stream相关的API(筛选,排序,聚合)操作就都可以可视化的展示出来了,调试时非常的方便,排查问题岂不是一眼就看到问题所在了。