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 流程,查看对象属性等

总结

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

以上就是IntelliJ IDEA 老司机还没用过 Stream Trace功能(问题小结)的详细内容,更多关于idea Stream Trace的资料请关注我们其它相关文章!

(0)

相关推荐

  • idea远程调试spark的步骤讲解

    spark 远端调试 本地调试远端集群运行的spark项目,当spark项目在集群上报错,但是本地又查不出问题时,最好的方式就是调试一步一步跟踪代码.但是在集群上的代码又不能像本地一样的调试.那么就试试这个调试方法吧. 远程调试spark其实就四步: * 第一步jar包拷贝到集群master节点. * 第二步在 idea 中配置远程机器的IP 和调试端口号. * 第三步:启动远端的spark项目. * 第四步 启动idea 进行调试. 首先 首先了解jvm一些参数属性 -Xdebug -Xrun

  • 详解IDEA中类加载器调用getResourceAsStream()方法需注意的问题

    当我们使用类加载器调用getResourceAsStream()时,经常会出现空指针异常,明明路径名称都没有问题,为什么就是报空指针异常呢? 查了一下getResourceAsStream()的用法: 1. Class.getResourceAsStream(String path) : path 不以'/'开头时默认是从此类所在的包下取资源,以'/'开头则是从ClassPath根下获取.其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源. 2. Class.getCl

  • Tomcat使用IDEA远程Debug调试的讲解

    Tomcat运行环境:CentOS6.5.Tomcat7.0.IDEA 远程Tomcat设置 1.在tomcat/bin下的catalina.sh上边添加下边的一段设置 CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=60222,suspend=n,server=y" 2.address=60222 这个是后边IDEA设置的时候需要用到的调试端口,可以任意设置一个未使用的端口,但是后边的配置都要一致. IDEA设

  • 你不知道的 IDEA Debug调试小技巧(小结)

    一.多线程调试断点 Intellij IDEA 的debug断点调试是有一个模式的选择的,就像下面这张图,平时我们都使用的是默认的 ALL(在Eclipse中默认是线程模式) ,这种模式我们只能将一个线程断下来,但其他线程却已经执行过了:而将其改为 Thread 后,就可以多个线程都断下来,并且可以很方便的切换线程的执行流程,这就是多线程调试. 在debug控制台能够很方便的查看线程的执行状态,也可以很方便的选择某个线程去执行: 二.回退断点 不知道大伙有没有遇到这样一个问题,当我们进行debu

  • 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 ->

  • 作为老司机使用 React 总结的 11 个经验教训

    原文作者:Jolyon Russ 本文编译:胡子大哈 翻译原文:http://huziketang.com/blog/posts/detail?postId=58e83f01a58c240ae35bb8e1 英文连接:11 lessons learned as a React contractor 转载请注明出处,保留原文链接以及作者信息 一开始在 React 路上摸爬滚打的时候,不知道该寻找些什么,但是这些年来,回头总结经验才发现,要找的已经在脑子里了.下面是我自己在学习 React 历程的一

  • IDEA入门级使用教程你居然还在用eclipse?

    参考链接 亲测试以下版本成功激活附激活教程. idea下载链接(对应版本号下载): https://www.jetbrains.com/idea/download/other.html IDEA 2020.2.3版本 IntelliJ IDEA 2020.2.3永久激活码(亲测有效) IDEA 2020.2.2版本 IDEA2020.2.2激活与IntelliJ IDEA2020注册码及IntelliJ全家桶激活码的详细教程(有你足矣) IntelliJ IDEA 2020.1版本 IDEA 2

  • mysql居然还能实现分布式锁的方法

    前言 之前的文章中通过电商场景中秒杀的例子和大家分享了单体架构中锁的使用方式,但是现在很多应用系统都是相当庞大的,很多应用系统都是微服务的架构体系,那么在这种跨jvm的场景下,我们又该如何去解决并发. 单体应用锁的局限性 在进入实战之前简单和大家粗略聊一下互联网系统中的架构演进. 在互联网系统发展之初,消耗资源比较小,用户量也比较小,我们只部署一个tomcat应用就可以满足需求.一个tomcat我们可以看做是一个jvm的进程,当大量的请求并发到达系统时,所有的请求都落在这唯一的一个tomcat上

  • 做java这么久了居然还不知道JSON的使用(一文带你了解)

    JSON(JavaScript Object Notation, NS对象标记)是一种轻量级的数据交换格式,目前使用特别广泛. 采用完全独立于编程语言的 文本格式 来存储和表示数据. 简洁和清晰的层次结构使得JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率. 在JavaScript语言中,一切都是对象.因此,任何JavaScript 支持的类型都可以通过JSON来表示,例如字符串.数字.对象.数组等.看看他的要求和语法格式: 对象表示为键值对

  • 老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略

    一.首先安装MySql: 对于MySql来讲在整个过程中是相对独立的安装,并且我的ubuntu在以前做开发的时候就已经安装了MySql,所以以下只给出安装步骤:   1.安装MySql的服务: sudo apt-get install mysql-server 要注意的是安装过程中会提示你设置mysql的root账户的密码:其他就没什么需要注意的地方了. 2.安装MySql的客户端: sudo apt-get install mysql-client 直接输入安装 3.安装MySql的lib依赖

  • 老司机带你解读jQuery插件开发流程

    jquery插件开发模式 jquery插件一般有三种开发方式: 通过$.extend()来扩展jQuery 通过$.fn 向jQuery添加新的方法 通过$.widget()应用jQuery UI的部件工厂方式创建 第一种$.extend()相对简单,一般很少能够独立开发复杂插件,第三种是一种高级的开发模式,本文也不做介绍.第二种则是一般插件开发用到的方式,本文着重讲讲第二种. 插件开发 第二种插件开发方式一般是如下定义 $.fn.pluginName = function() { //your

  • 利用Intellij Idea连接远程服务器实现远程上传部署功能

    如果我们在Intellij Idea中开发好程序,需要部署到远程SSH服务器运行,我们可以使用某些SSH软件的rz功能,也可以使用专用的FTP.SFTP上传工具.其实我们可以直接在Idea软件内来配置部署,不但不用切换软件,也不用翻找本地打包的位置,随时i修改,随时更新. 一.Tools->Deployment->Configuration 二.点击左上角"+"号,新建一个SFTP,输入一个名称,比如"StormServer" 三.填写远程SSH服务器信

  • android Socket实现简单聊天功能以及文件传输

    干程序是一件枯燥重复的事,每当感到内心浮躁的时候,我就会找小说来看.我从小就喜爱看武侠小说,一直有着武侠梦.从金庸,古龙,梁羽生系列到凤歌(昆仑),孙晓(英雄志)以及萧鼎的(诛仙)让我领略着不一样的江湖. 如果你有好看的武侠系列小说,给我留言哦.题外话就扯这么多了,接着还是上技术. 看看今天实现的功能效果图: 可以这里使用多台手机进行通讯,我采用的服务器发送消息. 是不是只有发送消息,有些显得太单调了.好,在发送消息的基础上增加文件传输.后期会增加视频,音频的传输,增加表情包.那一起来看看图文消

  • Java面向对象之继承、构造方法、重写、重载

    目录 构造方法 无参构造 有参构造 注意 类的继承 方法重写.重载 重写 重载 构造方法 类的构造方法是特殊的方法,此方法名称必须和类名一致,构造不能有返回值 不使用void,不能直接调用,在类对象实例化时自动调用,new 的时候可以调用.一般构造方法用于类对象实例化时的初始化.如果一个类没有编写构造方法,系统自动给此类编译时添加一个无参构造方法.如果声明类编写了构造方法,系统不再添加无参构造方法,建议编写完构造方法时,最好编写一个无参构造方法. 无参构造 说白了就是没有参数的构造方法概念看不懂

随机推荐