您的位置 首页 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

关于作者: 智云科技

热门文章

网站地图