您的位置 首页 java

Java 8- lambdas调试技巧

如何调试(debug)Stream Pipeline中的操作。

比如下列代码

  
List <Integer > numbers = Arrays.asList (2, 3, 4, 5 );
numbers.stream ( )
.map (x -> x + 17 )
.filter ( x -> x % 2 == 0 )
.limit (3)
.forEach (System.out::println);  

输出结果如下:

 20
22  

每次调用forEach方法,都会扫描整个stream。

怎么能确认pipeline中的每个操作(map, filter, limit)结果呢?

下面登场的是 stream 的 peek操作。

通过peek,来确认stream pipeline中的每一步操作前后的中间值。

 List < Integer > result =
numbers.stream ( )
.peek ( x -> System.out.println (“from stream: “  + x ) )

.map (x -> x + 17 )
.peek ( x ->  System.out.println (“after map: “  + x ) )

.filter ( x -> x % 2 == 0 )
.peek (x ->  System.out.println (“after filter: “  + x ) )

.limit (3)
.peek ( x ->  System.out.println (“after limit: “  + x ) )
.collect(toList());  

打印pipeline的每一步操作

 from stream: 2
after map: 19

from stream: 3
after map: 20
after filter: 20
after limit: 20

from stream: 4
after map: 21
from steam: 5
after map: 22
after filter: 22
after limit: 22  

文章来源:智云一二三科技

文章标题:Java 8- lambdas调试技巧

文章地址:https://www.zhihuclub.com/169611.shtml

关于作者: 智云科技

热门文章

网站地图