gpt4 book ai didi

java - 为什么 Stream.allMatch() 为空流返回 true?

转载 作者:IT老高 更新时间:2023-10-28 13:51:12 43 4
gpt4 key购买 nike

我的同事和我遇到了一个错误,这是由于我们假设调用 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/

43 4 0