Cómo combinar múltiples lista en el mapa plana con nula y verificación vacía en Java 8?

AshwinK:

Estoy lista fusión múltiple utilizando Stream.of(..)y luego realizar flatMapen 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 nonNully notEmpty? Si ans es no entonces,

Segunda pregunta :

¿Cómo puedo realizar el nonNully notEmptycontroles de todo el listsque recibo de fooen el código anterior? Así que cada vez que la fusión de estos tres lista ocurre, será básicamente ignorar el nully empty listque 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 flatMapjava-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())

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=202202&siteId=1
Recomendado
Clasificación