我用Java 8的peek
试了以下代码片段。
List<String> list = Arrays.asList("Bender", "Fry", "Leela");
list.stream().peek(System.out::println);
但是控制台上没有任何输出。如果我改成以下方式:
list.stream().peek(System.out::println).forEach(System.out::println);
我看到以下内容,输出了peek和foreach调用。
Bender
Bender
Fry
Fry
Leela
Leela
无论是 foreach
还是 peek
都使用了 (Consumer<? super T> action)
参数,那么为什么输出结果会不同呢?
peek
在你调试某个终端操作并想要在应用该终端操作之前找出先前状态的样子时特别有用。在这种情况下,您可以使用peek
打印流的元素。 - Neopeek
立即返回一个新的流,这也不是什么都没有做。 - a better oliver