共计 1024 个字符,预计需要花费 3 分钟才能阅读完成。
前言
自从 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 流程,查看对象属性等
总结
这个简略的性能,看一遍就会,置信能够在日常的调试中对你有很大帮忙,接下来会介绍更多的你未曾注意又很高级调试技巧
日拱一兵 | 原创
正文完