Поскольку вы не вкладываете второй поток в первый, а выравниваете его:
.flatMap(a -> a.getListB().stream())
Так, наконец, после этого утверждения вы получите просто stream<B>
всех элементов List
s.B
.
Чтобы решить ваши требования, вложите поток и используйте forEach()
вместо flatMap()
, поскольку здесь вы не хотите ничего преобразовывать, но хотите применить Consumer
:
Collection<A> listA = ...;
listA.stream()
.filter(a -> a.getListaB() != null)
.forEach(a -> a.getListB().stream()
.forEach(b -> {
// a and b are usable now
})
);