IntelliJ IDEA中如何优雅的调试Java Stream操作
source link: https://blog.didispace.com/idea-debug-java-stream/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
IntelliJ IDEA中如何优雅的调试Java Stream操作
什么是Stream操作
Stream操作是Java 8推出的一大亮点,它与java.io包里的InputStream和OutputStream是完全不同的概念。Java 8中的Stream是对容器对象功能的增强,它专注于对容器对象进行各种非常便利、高效的 聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API借助于同样新出现的Lambda表达式,极大的提高编程效率和程序可读性。
同时,它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用fork/join并行方式来拆分任务和加速处理过程。通常,编写并行代码很难而且容易出错, 但使用Stream API无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。所以说,Java8中首次出现的java.util.stream
是一个函数式语言 + 多核时代综合影响的产物。
虽然java.util.stream
很强大,但依然还是有很多开发者在实际工作中很少使用,其中吐槽最多的一个原因就是不好调试,一开始确实是这样,因为stream这样的流式操作在DEBUG的时候,是一行代码,直接下一步的时候,其实一下就过去了好多操作,这样我们就很难判断到底是里面的哪一行出了问题。
不过,现在的话,在强大的IDEA支持下,stream的调试其实也没那么难了,下面就来学习一下在IDEA中如何调试stream操作吧。
调试Stream操作
视频演示:点击这里查看
先来看下面这样的这段代码:
public class StreamTest {
@Test
void test() {
List<String> list = List.of("blog.didispace.com", "spring4all.com", "openwrite.cn", "www.didispace.com");
List<String> result = list.stream()
.filter(e -> e.contains("didispace.com"))
.filter(e -> e.length() > 17)
.toList();
System.out.println(result);
}
}
这段代码的逻辑是通过stream去过滤list集合中的元素,由于有两个filter,所以当出现问题的时候,可能不知道具体是哪个filter中出了问题。
借助强大的IDEA,我们在遇到stream的时候,只需要点击下图中的按钮:
此时会弹出一个Stream操作的跟踪窗口:
该窗口中的标签就是这个stream操作的每一步,我们可以通过点击标签去查看每一步执行前和执行后的结果去判断这里的filter是否执行正确。
是不是一下感觉简单了很多呢?
到这里,也许有的小伙伴动手在尝试的话,可能会问了,怎么没有图里的那个按钮呢?
这里可能跟IDEA的版本有关,目前最新的版本都自带了这个功能,但如果你还在用老版本的IDEA的话,可以通过手工安装下面这个插件Java Stream Debugger来拥有这个功能:
好了,今天的分享就到这里,如果你还没有用过这个调试功能的话, 赶紧打开IDEA试一试吧!
如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!另外,不要走开,这是我在持续更新的玩转IDEA专栏,电子书形式的沉浸式阅读体验,赶紧加入收藏夹吧!
Recommend
-
143
Early Access Program Features IntelliJ IDEA 2017.3 Public Preview...
-
85
What’s New in IntelliJ IDEA 2022.2 IntelliJ IDEA 2022.2 includes multiple quality improvements to the remote development functionality,...
-
97
前言# IDEA是一个智能开发工具,每个开发者的使用习惯不同,如何个性化自己的IDEA?我们可以通过Settings功能来设置。Settings文件是IDEA的配...
-
65
-
26
目录Java8 Stream API 的不友好性借助 IntelliJ IDEA 来优化一下2.1 新建 Stream Live Templates2.2 顺手把其他常用的模板设置一下Java8 Stream API 的不友好性Java8 自 2014 年 3 月发布以来,已经过去很多个年头了。在公司内部也已逐渐将所有的生产代码迁移到这...
-
35
Tips: all for hands-free. Tips 系列:记录日常解决问题、解放双手的一些小技巧。 目的只有一个:不被重复的琐事麻痹,能偷懒的绝不手软。 今天聊聊如何优雅的使用GDB调试Go程序。 GDB有啥用?...
-
6
自从 Java 8 开始,作为程序员的我们都离不开 Stream 相关功能的使用,书写起来那叫一个流畅(这个 feel~~)。但总是有一些时候,我们对 stream 的操作所要的结果和预期不符,这就需要我们逐步调试,定位问题 先来看下面这段代码: public st...
-
3
如何设置IntelliJ IDEA的内存和启动参数
-
0
全面吃透JAVA Stream流操作,让代码更加的优雅 ...
-
6
Intellij IDEA如何导入Maven项目 精选 原创 是温度呀 2022-09-20 11:26:38...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK