Java 8 Java8流,任意匹配

Java 8 Java8流,任意匹配,java-8,java-stream,Java 8,Java Stream,此代码总是只循环一次,当两个if块为false时,如何循环所有元素然后返回true?似乎您需要尝试allMatch。是否希望所有元素都与谓词匹配?您的问题不清楚输出应该是什么。是否要求所有映射项都传递此谓词?如果两个谓词为false,并且我希望继续循环,并在上次返回true,则可以使用allMatch而不是anyMatch@Eugene yeploop@Eran我尝试了allMatch,但当两个谓词为false时,仍然会循环一次。您应该停止推理它的作用,并开始考虑您实际想要的结果allMatch

此代码总是只循环一次,当两个if块为false时,如何循环所有元素然后返回true?

似乎您需要尝试
allMatch

是否希望
所有
元素都与
谓词
匹配?您的问题不清楚输出应该是什么。是否要求所有映射项都传递此谓词?如果两个谓词为false,并且我希望继续循环,并在上次返回true,则可以使用
allMatch
而不是
anyMatch
@Eugene yeploop@Eran我尝试了
allMatch
,但当两个谓词为false时,仍然会循环一次。您应该停止推理它的作用,并开始考虑您实际想要的结果
allMatch
意味着所有元素都必须匹配,这在一个元素不匹配时是不可能的,因此,当遇到一个不匹配的元素时,它不需要处理所有元素。就像
a和
a
false
时不会计算
b
一样@HavenLin,那么,你能分享你的代码了解更多细节吗?我是说
comparedeail
方法和
AKey
AValue
对象太长了,我可以给你发截图。
boolean isSuccess = aMap.entrySet().stream().anyMatch(entry -> {
                AKey aKey= entry.getKey();
                BValue bValue = bMap.get(aKey);
                if (bValue == null) {
                    return false;
                }

                AValue aValue = entry.getValue();
                if (compareDetail(aValue, bValue)) {
                    return false;
                }

                return true;
            }
    );