IntelliJ IDEA 小技巧: Stream Trace 功能!

Java技术迷

共 2292字,需浏览 5分钟

 · 2021-06-12


粉丝福利:小编会从今天留言的小伙伴中随机抽赠送8.88元现金红包。

娱乐抽奖,大家随缘积极参与啦,给生活一点小幸运~感谢大家的支持

前言

自从 Java 8 开始,作为程序员的我们都离不开 Stream 相关功能的使用,书写起来那叫一个流畅(这个 feel~~)。但总是有一些时候,我们对 stream 的操作所要的结果和预期不符,这就需要我们逐步调试,定位问题

常规调试

先来看下面这段代码:

public static void main(String[] args) {
  Object[] res = Stream.of(1,2,3,4,5,6,7,8).filter( i -> i%2 == 0).filter( i -> i>3).toArray();
  System.out.println(Arrays.toString(res));
}

我们可以在 Stream 操作处打上断点,逐步查看结果,就像这样:

用好 Spring AOP,天降大锅从容应对!

我们需要各种单步调试,不是很直观,我们迫切的需要个一览视图,让我们快速查看我们的 Stream 结果

可视化调试

同样先选择行断点,以 Debug 模式进入程序:

Spring MVC用ResponseEntity返回可实现更强大的功能

接下来会弹出 Stream Trace,整个 Stream 操作尽显眼前

SpringBoot 部署 Jar 文件,瘦身优化指南 !

同样可以点击左下角的 Flat Mode 按钮,将整个视图扁平化

一条 update 语句引起的事故,这回让开发长长记性!!

在实际业务中,我们通常对集合进行各种 Stream 操作,我们再来个复杂一些的例子:

  List<Optional<Customer>> customers = Arrays.asList(
    Optional.of(new Customer("日拱一兵"18)),
    Optional.of(new Customer("卑微的小开发"22)),
    Optional.empty(),
    Optional.of(new Customer("OOT"21)),
    Optional.empty(),
    Optional.of(new Customer("温柔一刀"23)),
    Optional.empty()
  );

  long numberOf65PlusCustomers = customers
    .stream()
    .flatMap(c -> c
      .map(Stream::of)
      .orElseGet(Stream::empty))
    .filter(c -> c.getAge() > 18)
    .count();

  System.out.println(numberOf65PlusCustomers);

同样按照上面的操作得到可视化 Stream Trace 视图,直观了解整个 Stream 流程,查看对象属性等

知乎高赞:那些学计算机的女生后来都怎么样了?

总结

这个简单的功能,看一遍就会,相信可以在日常的调试中对你有很大帮助,接下来会介绍更多的你不曾留意又很高级调试技巧。

你用过这个功能吗?你还知道哪些高级技巧?


1、Intellij IDEA这样 配置注释模板,让你瞬间高出一个逼格!
2、基于SpringBoot的迷你商城系统,附源码!
3、最牛逼的 Java 日志框架,性能无敌,横扫所有对手!
4、把Redis当作队列来用,真的合适吗?
5、惊呆了,Spring Boot居然这么耗内存!你知道吗?
6、全网最全 Java 日志框架适配方案!还有谁不会?
7、Spring中毒太深,离开Spring我居然连最基本的接口都不会写了

点分享

点收藏

点点赞

点在看

浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报