该Javadoc中指出,
这是一个短路状态中间操作。
Javadoc中 stateful 的定义:
在处理新元素时,有状态的操作,例如distinct 和sorted,可能会合并以前看到的元素的状态。有状态操作可能需要在产生结果之前处理整个输入。例如,在看到流的所有元素之前,无法通过对流进行排序来产生任何结果。因此,在并行计算下,一些包含有状态中间操作的管道可能需要对数据进行多次传递或可能需要缓冲重要数据。包含完全无状态中间操作的管道可以在单程中处理,无论是顺序还是并行,数据缓冲最少。
如何是default Stream<T> takeWhile?(Predicate<? super T> predicate)有状态的?它不需要查看整个输入等...
这几乎就像是filter短路。