AshwinK:
Eu estou fundindo lista múltipla usando Stream.of(..)
e, em seguida, executar flatMap
no mesmo para recolher a lista combinada como abaixo:
class Foo{
List<Entity> list1;
List<Entity> list2;
List<Entity> list3;
//getters & setters
}
Foo foo = getFoo();
Predicate<Entity> isExist = //various conditions on foo ;
List<Bar> bars = Stream
.of(foo.getList1(), foo.getList2(), foo.getList3())
.flatMap(Collection::stream)
.filter(isExist)
.map(entity -> getBar(entity))
.collect(Collectors.toList());
Primeira pergunta :
Faz Stream.of(..)
verificações nonNull
& notEmpty
? Se ans é Sem então,
Segunda pergunta :
Como posso executar o nonNull
& notEmpty
verificações em toda a lists
Eu estou recebendo a partir foo
do código acima? Assim que sempre fusão de todos estes três lista de acontecer, vai basicamente ignorar o null
& empty
list
para evitar NullPointerException
?
Eugene:
Stream
.of(foo.getList1(), foo.getList2(), foo.getList3())
.filter(Objects::nonNull)
....
Ou, como apontado por Holger e especificado no flatMap
java-doc:
Se um fluxo mapeado é nula uma corrente de vazio é utilizado, em vez disso.
Assim, você pode fazer:
Stream
.of(foo.getList1(), foo.getList2(), foo.getList3())
.flatMap(x -> x == null? null : x.stream())