Если мы добавим пробелы в println в peek
, мы сможем лучше понять, почему это происходит:
long result2 = nums.stream()
.peek(e -> System.out.print(e + " "))
.map(n->n*n)
.filter(n->n>20)
.peek(e -> System.out.print(e + " "))
.count();
Это выводит:
1 2 3 4 5 25 6 36
Как видите, 1
проходит, распечатывается, не проходит фильтр и, следовательно, квадрат не печатается. То же самое верно для 2
, 3
и 4
. Затем 5
проходит и печатается. Он проходит фильтр, поэтому 25
печатается. Пока что имеем:
1 2 3 4 5 25
Затем шесть проходит аналогичным образом, и у нас остается
1 2 3 4 5 25 6 36
А затем System.out.println(result);
печатается. Поскольку последний вызов был print
, а не println
, он печатается в той же строке, поэтому добавляется 2
. Если мы уберем пробелы, это даст:
12345256362
Какой результат