Java 8 Java8流,任意匹配
此代码总是只循环一次,当两个if块为false时,如何循环所有元素然后返回true?似乎您需要尝试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
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;
}
);