Ich möchte verschachtelte Listen mit java8 streams
iterieren und einige Ergebnisse der Listen bei der ersten Übereinstimmung extrahieren. Leider muss ich auch einen Wert vom übergeordneten Inhalt erhalten, wenn ein untergeordnetes Element dem Filter entspricht.Wie werden geschachtelte For-Schleifen, die sich auf Elternelemente beziehen, mit Java-8-Streams iteriert?
Wie könnte ich das tun?
// Java7
Result result = new Result();
//find first match and pupulate the result object.
for (FirstNode first : response.getFirstNodes()) {
for (SndNode snd : first.getSndNodes()) {
if (snd.isValid()) {
result.setKey(first.getKey());
result.setContent(snd.getContent());
return;
}
}
}
// java8
response.getFirstNodes().stream()
.flatMap(first -> first.getSndNodes())
.filter(snd -> snd.isValid())
.findFirst()
.ifPresent(???); //cannot access snd.getContent() here
mögliche Duplikate von [Java 8 - Streams Verschachtelte ForEach mit unterschiedlicher Sammlung] (http://stackoverflow.com/questions/25357043/java-8-streams-nested-foreach-with-different-collection) –