我的问题以最简单的表达方式:
根据JavaDoc:
Peek()方法的存在主要是为了支持调试,您希望在元素流过管道中的某个点时查看它们。
我有一个10 米长的管道,在距离 输入头3米和7 米peek()的地方,我有两个标记 [aka ] 用于检查/调试我的元素。
现在从输入端我输入1,2,3,4,5.
在点 x = 4 米处,我有一个filter()过滤所有小于和等于的元素3。
现在根据Java doc,我应该能够看到我在管道中的输入在距离3和7米处发生了什么。
距离 3 ( )处的标记1处的输出不应该是?并且在距离 7处的标记2 处的输出 应该很明显。.peek()1,2,3,4,54,5
但这实际上并没有发生,输出只是在 1st market(.peek())1,2,3和在 2nd 它来了4,5。
我为测试我的理论而执行的代码:
final List<Integer> IntList=
Stream.of(1, 2, 3, 4, 5)
.peek(it -> System.out.println("Before Filtering "+it)) // should print 1,2,3,4,5
.filter(it -> it >= 3)
.peek(it -> System.out.println("After Filtering: "+it)) //should print 4,5
.collect(Collectors.toList());
实际输出:
Before Filtering 1
Before Filtering 2
Before Filtering 3
After Filtering: 3
Before Filtering 4
After Filtering: 4
Before Filtering 5
After Filtering: 5
预期输出(开发人员在阅读JavaDoc后应该想到什么(...主要用于支持调试,您希望在其中看到元素流过管道中的某个点...)
Before Filtering 1
Before Filtering 2
Before Filtering 3
Before Filtering 4
Before Filtering 5
After Filtering: 4
After Filtering: 5
如果.peek()不仅仅是在管道中的特定点进行调试,那么 def 是不明确的。
对不起我的 Pipe 故事,我认为这样我可以最好地解释我想问的问题。
www说
森林海
RISEBY
随时随地看视频慕课网APP
相关分类