• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:IntelliJ-IDEA-老炮还没用过-Stream-Trace-功能

java 搞代码 3年前 (2022-02-14) 33次浏览 已收录 0个评论
文章目录[隐藏]

前言

自从 Java 8 开始,作为程序员的咱们都离不开 Stream 相干性能的应用,书写起来那叫一个晦涩(这个 feel~~)。但总是有一些时候,咱们对 stream 的操作所要的后果和预期不符,这就须要咱们逐渐调试,定位问题

惯例调试

先来看上面这段代码:

<code class="java">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 操作处打上断点,逐渐查看后果,就像这样:

咱们须要各种单步调试,不是很直观,咱们迫切的须要个一览视图,让咱们疾速查看咱们的 Stream 后果

可视化调试

同样先来源gao.dai.ma.com搞@代*码网抉择行断点,以 Debug 模式进入程序:

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

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

在理论业务中,咱们通常对汇合进行各种 Stream 操作,咱们再来个简单一些的例子:

<code class="java">        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 流程,查看对象属性等

总结

这个简略的性能,看一遍就会,置信能够在日常的调试中对你有很大帮忙,接下来会介绍更多的你未曾注意又很高级调试技巧

日拱一兵 | 原创


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:IntelliJ-IDEA-老炮还没用过-Stream-Trace-功能

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址