idea怎么调试html5,idea调试java8 stream流的小技巧

前言

开发工作中,没有谁不会用到debug调试吧?对于java8中stream流的调试你们又是怎么debug的呢?譬如下面这一段代码,你们是不是打个断点,按F6一步一步的看呢?如果里面的循环比较少的情况,这种debug还可以接受,如果循环比较多的话,可能心里就有点烦了。

List collect = Stream.of(1, 2, 3, 4, 5, 6).filter(i -> i % 2 == 0).filter(i -> i > 3).collect(Collectors.toList());

talk is cheap,show me the code

idea 调试技巧

就拿上面那段代码做示例,我们在这段代码上打一个断点,idea中会弹出几个选项,我们就选择行断点,如图1;

cee852ad64cc934365174015daf233b4.png

图1

接着以debug方式启动,那么断点就会进来;再接着点击idea中 trace current stream chain 按钮,如下图2;

e3e8209b8e33c12ef44d047eb1fa2d11.png

图2

这时我们就会看到图3的样子;

e4544427f1feaf8ec2f416e6e800f765.png

图3

其中,第一个框里面的内容就是最原始的数据,第一个filter 就是过滤掉条件后符合的结果,见图4;第二个filter就是以第一个filter过滤后的结果为原始数据再过滤的结果,见图5;最后collect 就是最终得到的数据,见图6。

ef5ba665764da84e8a42ed7510e45ee1.png

图4

0f38aaf8d4ac4f52c5aed80bc84668fc.png

图5

b48826e0014165dd43cd3ac9dffb8e5b.png

图6

当然,我们可以点击flat mode 按钮,这样可以更直观的观察到数据的变化,见图7;

cf45433a745cfda57091afe35889f1b6.png

图7

那有人说了,你这是简单的数据类型,复杂的数据类型也能调试吗?

当然可以!道理都是一样的。如下,现在集合中有一批学生,现在想筛选出名字中含字母s的并且年龄大于15的。

Student s1 = new Student("zs", 18); Student s2 = new Student("ls", 34); Student s3 = new Student("ww", 23); Student s4 = new Student("wr", 15); Student s5 = new Student("ln", 16); List list = new ArrayList<>(); list.add(s1); list.add(s2); list.add(s3); list.add(s4); list.add(s5); List stu = list.stream().filter(s -> s.getName().contains("s")).filter(s -> s.getAge() > 15).distinct().collect(Collectors.toList()); System.out.println(stu);

在13行这里打断点,debug运行后,打开流的追踪,可以看到图8的结果。

b2ff612a1c9921c8f6f914c6ea2cc086.png

图8

结语

不得不说,idea有的功能确实非常的好用,据说2021版的又添加了nb的功能,你尝鲜了吗?

生活不只有无穷尽的coding,还应该有点不一样的技巧[呲牙]。

关注小编,与你一同学习成长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值