sream有不少好处,简化代码提高效率,但是把遇到非常复杂的stream流处理,debug起来就很头疼,因为不管你写的有多长,在idea看来就是一行代码,debug一下就过去,你很难去看stream流处理的每一步。
这问题不是没有解决方案,在idea在2018以后的版本针对Java8的stream的debug默认安装了一个Java Stream Debugger的插件。也就是你用的是新版本的idea基本都集成了这个插件。
但是这个插件怎么用是一个问题,我就随便写一个很简单的例子
代码如下:
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class StreamTraceTest {
@Test
public void traceTest(){
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(10);
list.add(15);
list.add(8);
List<Integer> result = list.stream().filter(a -> a >= 10).collect(Collectors.toList());
result.stream().forEach(System.out::println);
}
}
我要debug看filter过滤的过程
首先这个插件要在debug模式下才能用,要在debug模式下才能用,要在debug模式下才能用
重要的是事情说三遍
debug到对应位置,注意下面的一个图标如图:
点一下他,就会是下图的样子:
参照上边的图片,实际上相当于对stream的流操作进行了分解,点击上面的每个操作就是对应的操作和演示
比如我直接点到最后一步