AshwinK:
Estoy lista fusión múltiple utilizando Stream.of(..)
y luego realizar flatMap
en el mismo para recoger la lista combinada de la siguiente manera:
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());
Primera pregunta :
Hace Stream.of(..)
cheques nonNull
y notEmpty
? Si ans es no entonces,
Segunda pregunta :
¿Cómo puedo realizar el nonNull
y notEmpty
controles de todo el lists
que recibo de foo
en el código anterior? Así que cada vez que la fusión de estos tres lista ocurre, será básicamente ignorar el null
y empty
list
que se deben evitar NullPointerException
?
Eugene:
Stream
.of(foo.getList1(), foo.getList2(), foo.getList3())
.filter(Objects::nonNull)
....
O como se ha señalado por Holger y especificado en el flatMap
java-doc:
Si una corriente asignada es nulo se utiliza un flujo de vacío, en lugar.
por lo tanto, se puede hacer:
Stream
.of(foo.getList1(), foo.getList2(), foo.getList3())
.flatMap(x -> x == null? null : x.stream())