Java8提供了Stream,可以方便的进行一些数据操作,比如提供了过滤,分组甚至并行等特性。
但是我们常常需要查看中间操作的结果,肿么办??
大救星 Stream的peek()方法来了。
我们先看下它的源码:
可以看到参数为Consumer<? super T> action,而且注释还贴心的给出了例子
Stream.of("one", "two", "three", "four") .filter(e -> e.length() > 3) .peek(e -> System.out.println("Filtered value: " + e)) .map(String::toUpperCase) .peek(e -> System.out.println("Mapped value: " + e)) .collect(Collectors.toList());
输出的结果:
Filtered value: three Mapped value: THREE Filtered value: four Mapped value: FOUR
因此我们可以方便的打印中间结果。
另外介绍一个IDEA调试插件"Java Stream Debugger", 可以查看中间操作的结果
在stream中打个断点,用debug模式,中断后可以用这个插件追踪stream链。
效果非常直观,对理解stream有很大帮助。