gpt4 book ai didi

java - skip() 方法是短路操作吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:05 25 4
gpt4 key购买 nike

我正在阅读有关 Java 流的短路操作,并在一些文章中发现 skip() 是一种短路操作。

在另一篇文章中,他们没有提到 skip() 作为短路操作。

现在我很困惑; skip() 是不是短路操作?

最佳答案

From the java doc under the "Stream operations and pipelines" section :

An intermediate operation is short-circuiting if, when presented with infinite input, it may produce a finite stream as a result. A terminal operation is short-circuiting if, when presented with infinite input, it may terminate in finite time.

强调我的。

如果您要在无限输入上调用 skip,它不会产生有限流,因此不是短路操作。

JDK8 中唯一的短路中间操作是 limit,因为它允许在有限时间内完成对无限流的计算。

示例:

如果您要使用skip 执行此程序:

String[] skip = Stream.generate(() -> "test") // returns an infinite stream
.skip(20)
.toArray(String[]::new);

它不会产生有限 流,因此您最终会得到类似于“java.lang.OutOfMemoryError:Java 堆空间”的结果。

而如果您使用limit 执行此程序,它将导致计算在有限 时间内完成:

String[] limit = Stream.generate(() -> "test") // returns an infinite stream
.limit(20)
.toArray(String[]::new);

关于java - skip() 方法是短路操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51571912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com