java - skip() 方法是短路操作吗?
问题描述
我正在阅读有关 Java 流的短路操作的信息,并在一些文章中发现这skip()
是一种短路操作。
在另一篇文章中,他们没有提到skip()
短路操作。
现在我很困惑;是否是skip()
短路操作?
解决方案
如果在出现无限输入时,中间操作可能会产生有限流,则它是短路的。如果一个终端操作在有无限输入时可能会在有限时间内终止,那么它就是短路的。
强调我的。
如果您要调用skip
无限输入,它将不会产生有限流,因此不会产生短路操作。
JDK8中唯一的短路中间操作是limit
因为它允许对无限流的计算在有限时间内完成。
例子:
如果您要使用以下命令执行此程序skip
:
String[] skip = Stream.generate(() -> "test") // returns an infinite stream
.skip(20)
.toArray(String[]::new);
它不会产生有限的流,因此您最终会得到类似于“java.lang.OutOfMemoryError: Java heap space”的内容。
而如果你使用 来执行这个程序limit
,它将导致计算在一段finite
时间内完成:
String[] limit = Stream.generate(() -> "test") // returns an infinite stream
.limit(20)
.toArray(String[]::new);
推荐阅读
- javascript - 文本上的 TouchableOpacity 效果
- python - 静态 gcloud 令牌?
- javascript - 如何将函数外的 XHR.onload 函数内的变量值分配给 javascript 变量?在 django
- mysql - MYSQL中时间戳和小时数的总和
- r - 使用 R 使用均值和标准开发进行交叉表计数
- html - 在移动设备上检查时,没有一个 div 使用 100% 的最大宽度
- node.js - 无法发布(节点/快递),我错过了什么?
- flutter - 我想做一个这样的按钮,但没有得到想要的输出
- r - 为什么 glmnet 中泊松套索回归模型的预测不是整数?
- android - java.lang.IllegalStateException:迁移没有正确处理:BriefComposition