您的原始代码包含逻辑错误:
Optionalfound = … .map(a -> a.value.equals(greetingType)) .findAny();
这将返回任意比较的结果,在顺序上下文中,它可能是第一个元素的结果.
我很确定你真的想知道是否有任何匹配元素,因此应该使用
boolean found = … .anyMatch(a -> a.value.equals(greetingType));
这可以简单地用作谓词来查找具有匹配元素的第一个元素:
return xmlFromNms.getObject().stream() .filter(obj -> obj.getAttributes().stream() .filter( a -> a.name.equals(GREETING_TYPE)) .anyMatch(a -> a.value.equals(greetingType))) .findFirst().orElse(null);