Java流意外结果

时间:2017-10-28 10:36:14

标签: java java-8 java-stream

我有以下代码:

Stream.of("Java", "Stream", "Test")
      .peek(s -> System.out.print(s + " "))
      .allMatch(s -> s.startsWith("J"));

为什么它会打印出Java Stream?

2 个答案:

答案 0 :(得分:10)

allMatch短路操作,因为大多数流操作都是如此。因为allMatch提前返回了peek只打印前两个元素的原因。

答案 1 :(得分:3)

因为allMatch()检查流中的每个元素是否为true。由于第二个是错误的,因此无需进一步检查。

因此peek()不会打印第3个元素。