Моя проблема наиболее простым и понятным способом:
Согласно JavaDoc :
Peek()
метод существует главным образом для поддержки отладки, где вы хотитеувидеть элементы, когда они протекают через определенную точку в трубопроводе.
У меня есть труба 10 метров и вНа расстоянии 3 и 7 метров от входной головки у меня есть два маркера [aka peek()
] для проверки / отладки моих элементов.
Теперь от конца ввода iЯ даю ввод 1,2,3,4,5
.
В точке x = 4 метра , у меня есть filter()
, который фильтрует все элементы меньше , чем и равно 3
.
Теперь, согласно документу Java, я должен видеть, что произошло с моим входом в конвейер на расстоянии 3
и 7
метров.
Вывод на marker1 на расстояние 3 (.peek()
) должно быть 1,2,3,4,5
не должно быть ??и вывод на marker2 на дистанции 7 , очевидно, должен быть 4,5
.
Но на самом деле этого не происходит, выход поступает на 1-й рынок (.peek()) просто 1,2,3
и на 2-й день наступает 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 (... существует в основном для поддержки отладки, когда вы хотите видеть элементы, проходящие мимо определенной точки вpipe ...)
Before Filtering 1
Before Filtering 2
Before Filtering 3
Before Filtering 4
Before Filtering 5
After Filtering: 4
After Filtering: 5
Если .peek()
не только для отладки в определенной точке конвейера, то это определение неоднозначно.
Извините за мою историюТрубка, я так думал, что смог бы лучше объяснить, что хочу спросить.