Ich habe den folgenden Code derzeit.Java 8 Stream - Bezug auf Original-Stream-Objekt nach Flatmap
Method - parseGreeting()
public GetGreetingNmsObjects parseGreeting(String greetingType, GetGreetingNmsResponse xmlFromNms) {
GetGreetingNmsObjects objectFound = null;
List<GetGreetingNmsObjects> objList = xmlFromNms.getObject();
for (GetGreetingNmsObjects obj : objList) {
List<Attribute> attrs = obj.getAttributes();
Optional<Boolean> found = attrs.stream()
.filter(a -> a.name.equals(GREETING_TYPE))
.map(a -> a.value.equals(greetingType))
.findAny();
if(found.get()) {
objectFound = obj;
break;
}
return objectFound;
}
GetGreetingNmsObjects .java-
public class GetGreetingNmsObjects {
List<Attribute> attributeList;
public List<Attribute> getAttributes() {
return attributeList;
}
}
In dem obigen Verfahren ist es eine Möglichkeit, die für die Schleife und if-Anweisung zu vermeiden und handle mit Streams selbst?
Ich habe versucht, 'flatmap' zu verwenden und den Stream für 'attributesList' abrufen, aber sobald die Übereinstimmung gefunden wird, konnte ich keinen Verweis auf 'GetGreetingNmsObjects' Objekt abrufen.
GetGreetingNmsObjects objectFound = objList.stream()
.flatMap(grt -> grt.getAttributes())
.filter(a -> a.name.equals(GREETING_TYPE))
.map(a -> a.value.equals(greetingType))
????