gpt4 book ai didi

java - 查找流中的哪个元素与 allmatch 中的给定谓词不匹配

转载 作者:搜寻专家 更新时间:2023-10-31 08:31:45 26 4
gpt4 key购买 nike

allmatch 的情况下,我想找出哪个元素使谓词失败。

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
boolean isEven = numbers.stream().allMatch(n-> n % 2 == 0);

此处 isEvenfalse,因为元素 1 未通过谓词。

我可以在流上使用 forEach 来查找哪个元素失败,例如:

numbers.stream().forEach(n -> {
if (n % 2 != 0)
System.out.println(n + "is Odd");
});

有没有办法在 allmatch 返回 false 时找出哪些元素不符合谓词?

最佳答案

请记住,allMatch 是一个短路操作,这意味着流 API 可能会在没有找到所有未通过测试的元素的情况下返回 false。

因此,如果您想找到所有 失败的元素,您可能需要做比简单的allMatch(如其他答案所示)更多的工作。但是,如果您只想找到一个未通过测试的元素,请按如下方式使用 findAny:

Optional<Integer> odd = numbers.stream()
.filter(n -> n % 2 != 0)
.findAny();

boolean isEven = !odd.isPresent();

odd.ifPresent(x -> System.out.println(x + " is odd"));

关于java - 查找流中的哪个元素与 allmatch 中的给定谓词不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44428715/

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