更好的调试 Java Stream


java8里新增的Stream API非常强大,能够开发出更加简洁易懂的代码,但是如果出现问题,往往也没那么好去调试。这里主要介绍使用idea的Stream debugger方法。

举个简单的例子

List<Integer> collect = Stream.of(0, 1, 2, 3, 4, 10, 11)
                .filter(item -> item % 2 == 0)
                .map(item -> item * 100)
                .collect(Collectors.toList());

这段代码想做的就是找出一组数据中的偶数,并把找出来的偶数扩大100倍。

如果我们想了解stream的流水线操作,每个操作后的结果是什么,我们像其他代码一样去用ide工具debug也不好使。在此我们可以想到用peek()去打印出每个操作后的结果,如下:

List<Integer> collect = Stream.of(0, 1, 2, 3, 4, 10, 11)
              .filter(item -> item % 2 == 0)
              .peek(System.out::println)
              .map(item -> item * 100)
              .peek(System.out::println)
              .collect(Collectors.toList());

输出结果:

0
0
2
200
4
400
10
1000

这样虽然能够达到目的,但是IntelliJ’s debugger 给我们更加形象化的表示:

怎么操作呢。

第1步 想调用stream debugger的话,首先要在Stream定义处设置断点

第2步 以debug模式运行代码

第3步 当到达断点时,可以按指定的按钮来调用 Stream debugger,如下:

OK,大功告成。


文章作者: shiv
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 shiv !
评论
  目录