我有以下代码:
Stream.of("Java", "Stream", "Test")
.peek(s -> System.out.print(s + " "))
.allMatch(s -> s.startsWith("J"));
为什么它会打印出Java Stream?
答案 0 :(得分:10)
allMatch
是短路操作,因为大多数流操作都是如此。因为allMatch
提前返回了peek
只打印前两个元素的原因。
答案 1 :(得分:3)
因为allMatch()
检查流中的每个元素是否为true。由于第二个是错误的,因此无需进一步检查。
因此peek()
不会打印第3个元素。