- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我的同事和我遇到了一个错误,这是由于我们假设调用 allMatch()
的空流将返回 false
。
if (myItems.allMatch(i -> i.isValid()) {
//do something
}
当然,假设而不是阅读文档是我们的错。但我不明白为什么空流的默认 allMatch()
行为返回 true
。这样做的原因是什么?与 anyMatch()
(相反地返回 false)类似,此操作以离开 monad 的命令式方式使用,并且可能在 if
语句中使用。考虑到这些事实,是否有任何理由让 allMatch()
在空流上默认为 true
对于大多数用途来说是可取的?
最佳答案
这被称为 vacuous truth .空集合的所有成员都满足您的条件;毕竟,你能指出一个没有的吗?
同样,anyMatch
返回 false
,因为您无法在集合中找到符合条件的元素。这让很多人感到困惑,但事实证明它是为空集定义“任何”和“全部”的最有用和最一致的方法。
关于java - 为什么 Stream.allMatch() 为空流返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30223079/
我有几个 predicates我都想得到满足。 能满足那些谓词的东西是少数字符串。单个字符串不必满足所有(或任何)这些谓词,但在我查看最后一个字符串后,所有谓词都必须满足。 我用 Java 表示这个问
在 allmatch 的情况下,我想找出哪个元素使谓词失败。 List numbers = Arrays.asList(1, 2, 3, 4, 5); boolean isEven = numbers
令我困扰的是(出于性能原因),如果不先创建流,我就无法在列表上调用 allMatch、anyMatch。所以我开始创建这样的实用方法: public static boolean anyMatch(
我想对 Java 流使用一条语句。 我想过滤所有要求为“true”的 Servicework 对象,然后检查所有 Servicework 对象的状态是否为“完成”。 但是如果 serviceworkL
我有以下流代码: List results = items.stream() .map(item -> requestDataForItem(item)) .filter(data ->
我有 X509 证书。我正在尝试从中提取所有 SAN。之后,我想确保 SAN 的类型为 dNSName - 即列表中的第一个条目应该是值为 2 的整数。引用- https://docs.oracle.
我想要以下逻辑:(我知道它不起作用,因为它不止一次消耗流)。但我不确定如何实现它。 Stream buffers = super.getBuffers().stream(); if (buffers.
int testValue; boolean success = false; while(success == false) { testValue = generateRandomInt();
我的同事和我遇到了一个错误,这是由于我们假设调用 allMatch() 的空流将返回 false。 if (myItems.allMatch(i -> i.isValid()) { //do
我想使用以 allMatch 终端操作结束的单个流链获得一个 false 值。 但是,我发现由于allMatch操作的设计,它在处理空流时会返回true。 例如,以下代码返回 true,因为过滤后的流
这个问题已经有答案了: Why does Stream.allMatch() return true for an empty stream? (6 个回答) 已关闭 4 年前。 每Java SE 8
我在另一篇文章中读到,经过调查发现 anyMatch 终端操作的工作方式是每个线程(在子流上操作)定期检查其他线程是否已找到结果,如果是,则所有其他线程都是停止了。 我假设,但想知道是否有人可以验证
考虑这个片段 - String a = "hello" , b = null, c = "guru"; boolean value = Stream .of(a, b, b.substrin
我是一名优秀的程序员,十分优秀!