{ Syste-6ren">
gpt4 book ai didi

java - Java 谓词背后的机制

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:59:48 26 4
gpt4 key购买 nike

我遇到了这个代码片段:

List<String> colors = Arrays.asList("red", "green", "yellow");
Predicate<String> test = n ->
{
System.out.println("Searching…");
return n.contains("red");
};
colors.stream().filter(c -> c.length() > 3).allMatch(test);

输出显示给我

Searching...

当我拿走 .filter(c -> c.length() > 3) 时,它显示给我

Searching...
Searching...

经过一些其他测试后,我发现最后一个元素(黄色)从未经过测试!

这是为什么!?

有人能解释一下它背后的机制吗?

非常感谢!!!

最佳答案

你打给了allMatch .这只是想知道“每一项都匹配这个谓词吗?”。这将遍历流并评估每个项目的谓词,直到找到一个错误的谓词,因为一旦找到错误,它就可以肯定地说并非每个项目都与谓词匹配。

文档说

May not evaluate the predicate on all elements if not necessary for determining the result.

一旦找到谓词为假的项,它就不会评估任何其他项。

关于java - Java 谓词背后的机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57687003/

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