limit()skip()方法使Stream变小。它们可以使有限流变小,或者可以使无限流中的有限流变。方法签名如下所示:

Stream<T> limit(int maxSize)
Stream<T> skip(int n)

以下代码c ....”

以上摘录自OCP Java 8本书。当它说“可以从无限流中产生有限流”时,​​它们在两种方法中是一起还是单独表示?我可以想象limit()如何使无限流更小,但是仅skip()如何才能做到这一点?有没有一种方法或文档中的措词需要更清楚?

最佳答案

“可以从无限流中生成有限流”肯定仅适用于limit(),而不适用于skip()
skip就像是从海洋中拿出一杯水,想知道“海洋中还剩下多少水?”,而limit就像是从中汲取了同一杯水,想知道“我从海洋中吸收了多少水? ”

如果流是无限的,那么跳过许多元素仍然会留下无限的流...

Stream.iterate(0L, i -> i + 1).skip(100).forEach(System.out::println);

理论上,这将永远持续下去。因此,有可能只是轻微的错误而使书的审阅者逃脱了。

08-05 14:48