IntelliJ IDEA 老炮,还没用过 Stream Trace 功能?

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


微信图片_20220511202409.png


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


可视化调试


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


微信图片_20220511202442.png


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


微信图片_20220511202510.png


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


微信图片_20220511202536.png


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


微信图片_20220511202614.png


总结


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



相关文章
|
3月前
|
Java 编译器 Maven
使用intellij idea搭建SSM架构的maven项目 详细
使用intellij idea搭建SSM架构的maven项目 详细
67 4
|
2月前
|
IDE Oracle Java
day4:JDK、IntelliJ IDEA的安装和环境变量配置
【7月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
130 0
|
2月前
|
网络协议 安全 Linux
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
64 2
|
3月前
|
IDE Java Scala
IntelliJ IDEA 2023.3 最新变化2
IntelliJ IDEA 2023.3 最新变化
|
3月前
|
Linux 开发工具 Windows
在WSL2中安装IntelliJ IDEA开发工具
在WSL2中安装IntelliJ IDEA开发工具
262 2
|
3月前
IDEA之Stream表达式生成、调试
IDEA之Stream表达式生成、调试
|
2月前
|
缓存 Java Maven
IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决
IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决
|
2月前
|
存储 Oracle Java
Java面试题:描述如何使用Eclipse或IntelliJ IDEA进行Java开发?
Java面试题:描述如何使用Eclipse或IntelliJ IDEA进行Java开发?
34 0
|
3月前
|
SQL 分布式计算 大数据
MaxCompute产品使用合集之如何在本地IDE(如IntelliJ IDEA)中配置MaxCompute (mc) 的任务和调试SQL
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
3月前
|
IDE Java 项目管理
Java入门——Intellij IDEA简介、使用IDEA开发程序、IDEA常用快捷键、IDEA其他操作
Java入门——Intellij IDEA简介、使用IDEA开发程序、IDEA常用快捷键、IDEA其他操作
48 3