我知道Java中有无限的流。
有没有办法检查流是否有限?
类似这样的方法ISSTREAMFINIT(流
@Test
public void testStreamFinity() {
assertFalse(isStreamFinite(generateLong()));
}
private <T> boolean isStreamFinite(Stream<T> stream) {
if (stream.count() < Long.MAX_VALUE) {
return true;
}
return false;
}
private Stream<Long> generateLong() {
return LongStream.generate(() -> new Random().nextLong()).boxed();
}
溪流的建设会留下一些痕迹/轨迹,我们可以用来追溯检查它?
检查方法能否始终可靠地按预期工作?
当我试图通过检测流的
isFinite
来解决问题时,我错了。它似乎不像答案中提到的那样稳定/可靠。我会在另一个环境中重构我的解决方案。谢谢你的帮助~
没有办法确定一个流是否是无限的,但有办法确定它是否是有限的。
[修正]我搞错了。
/**
* When this returns {@code true}, the stream is finite for sure. Otherwise the
* stream could be either infinite or finite.
*/
private static <T> boolean isStreamFinite(Stream<T> stream) {
return stream.spliterator().estimateSize() != Long.MAX_VALUE;
}
估计大小()
的Javadoc:
返回forEachRemaining
遍历将遇到的元素数的估计值,或返回Long。最大值
如果无限、未知或计算成本太高。
没有可靠的方法可以做到这一点。即使使用estimateSize
,它也有文档记录:
... 或者长时间返回。如果无限、未知或计算成本太高,则为最大值。
所以仅仅依靠Long这个事实。MAX_VALUE
会告诉你这个流是无限的还是非无限的——这完全是错误的。
另一个建议是使用大小
,这同样是错误的:
IntStream.generate(() -> 1).limit(5)
您知道这是一个
SIZED
流-实现不会也不会报告大小标志。
一句话:你不能用可靠的方式。理论上,这在某些情况下是可能的,比如当您只使用
generate
而不限制或短路流时,实现可能会注册一个标志,比如IS_INFINITE
或其他什么,但这个IMO将是无用的,可能在99%的情况下。
你也可以反过来想,当你想确定这条流是否是有限的时,怎么样?在这种情况下,
getExactSizeIfKnown()
会告诉您这一点。
问题内容: 我正在使用Python中的subprocess.Popen启动许多子流程。我想检查一个这样的过程是否已经完成。我发现了两种检查子流程状态的方法,但似乎都可以迫使流程完成。一种是使用process.communicate()并打印返回代码,如解释在这里。另一种方法是简单地调用process.wait()并检查它是否返回0。 有没有一种方法可以检查进程是否仍在运行,而无需等待进程完成? 问
我想检查一下“安全 但是我得到了这个错误:“系统事件出错:脚本编辑器不允许辅助访问。”进程“系统偏好设置”窗口1中的数字-1719 我希望能够在客户机上执行这段代码,所以我不想在可访问性中添加脚本编辑器。 我的问题是,有没有一种方法(objective-c、c或appleScript)来检查选项卡是否被锁定?
你好,我坐在一个小型的Java图书交换程序上,我想进一步了解编程,所以我的问题是 我现在有这个了 (buchRegal[0]==“” buchRegal[0]是字符串数组中的一个位置,buchRegal_id是int数组的一部分。通过这段代码,我了解到我可以检查数组[0]中的一个位置是否为空,现在的问题是我希望它检查其中是否有内容,如果是,我希望它移动到数组的下一部分,即数组[0],并将其放置在那
问题内容: 我知道可以用来从外壳检查给定的二进制文件,但是有可能在一个进程中执行此操作吗? 类似于(我完全组成了系统调用): 我正在尝试在我们的代码库中诊断一些可疑的SO链接问题,并且希望在可能的情况下以这种方式检查RPATH(我宁愿不必生成外部脚本)。 问题答案:
例如: 在上面的json中,我想检查这个json路径我不担心价值。 我可以用来完成吗?我以前使用过Stefan Goessner的库,但现在已经很旧了。 我想要Python中类似于此但不存在的东西()
我有一些微服务和使用Spring Cloud的网关。我正试图在网关中设置路由。理想情况下,我想在YML文件中设置路由,或者使用RouteLocator bean。 但目前,在我的网关中,每个路由都有RESTendpoint,这只是使用WebClient向前发送请求。 (在此之前,我有一个ReactiveAuthenticationManager过滤器,用于验证JWT令牌。它返回一个Username