“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);
理论上,这将永远持续下去。因此,有可能只是轻微的错误而使书的审阅者逃脱了。