这样不会有任何的输出;Stream.of("one", "two", "three", "four").peek(e -> System.out.println(e));
这样输出:Stream.of("one", "two", "three", "four").peek(e -> System.out.println(e)).collect(Collectors.toList())
one
two
three
four
原因:
java8流中所有的操作都是蓄而不发的,只有执行foreach,collect等终结操作时,流的操作才会执行。
而且流内部会自动进行优化,只要得到想要的解决就不会继续进行计算了。
peek是个中间操作,它提供了一种对流中所有元素操作的方法,而不会把这个流消费掉(foreach会把流消费掉),然后你可以继续对流进行其他操作。