Chcę iterować zagnieżdżone listy przy użyciu java8 streams
i wyodrębnić niektóre wyniki z list na pierwszym dopasowaniu. Niestety muszę również uzyskać wartości z treści nadrzędnej, jeśli element podrzędny pasuje do filtru.Jak iterować zagnieżdżone dla pętli odwołujących się do elementów nadrzędnych za pomocą strumieni Java 8?
Jak mogę to zrobić?
// 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
możliwy duplikat [Java 8 - Streams zagnieżdżony ForEach z inną kolekcją] (http://stackoverflow.com/questions/25357043/java-8-streams-nested-foreach- with-different-collection) –