zoukankan      html  css  js  c++  java
  • IntelliJ IDEA 老司机,还没用过 Stream Trace 功能?

    前言

    自从 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 操作处打上断点,逐步查看结果,就像这样:

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

    可视化调试

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

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

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

    在实际业务中,我们通常对集合进行各种 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 流程,查看对象属性等

    总结

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

  • 相关阅读:
    014_v2 python基础语法_dict
    6-05使用SQL语句删除数据
    6-04使用SQL语句更新数据
    6-03使用SQL语句一次型向表中插入多行数据
    6-02使用SQL语句向表中插入数据
    6-01T-SQL中的运算符
    5-08删除表
    5-07删除约束
    使用SQL语句向已有数据表添加约束
    5-06使用Sql 语句为表添加约束
  • 原文地址:https://www.cnblogs.com/FraserYu/p/14779764.html
Copyright © 2011-2022 走看看