Filtrar y elementos de la colección anidados Recoger con Java 8 corriente

crmepham;

I tener una colección de Parentobjetos y cada uno tiene una colección de Childelementos, por ejemplo:

public class Parent {
    private Collection<Child> children;
}

public class Child {
    private String type;
}

¿Cómo iba a utilizar Java 8 de programación funcional para filtrar y recoger una colección de Childla que el tipo es igual a 'A'?

He intentado esto con la siguiente:

Collection<Child> filteredChildren = parents.stream()
                                        .forEach(p ->
                                            filteredChildren.addAll(p.getChildren().stream()
                                                          .filter(c -> c.getType().equals("A"))
                                                          .collect(Collectors.toList()))
                                        );

Pero me sale el siguiente error:

Variable 'filteredChildren' inicializador 'parents.stream () .forEach (p -> ...' es redundante menos ... (⌘F1) Este puntos de inspección fuera de los casos en que un valor de la variable no se usa nunca después de su asignación, es decir: - la variable nunca se leyó después de la asignación OR - el valor siempre se sobrescribe con otra asignación antes de la siguiente variable de lectura o - la variable inicializador es redundante (para una de las anteriores dos razones)

¿Cómo se filtran las colecciones anidadas por tipo y los recojo?

Eran :

Es incorrecto utilizar forEachen su código para el terminal de Streamoperación, ya que no produce ninguna salida, por lo que no se puede asignar a la filteredChildrenvariable.

Utilice flatMapel fin de obtener un piso Streamde todos los Childcasos (filtrada por tipo) de todos los Parentcasos y, a continuación, a cobro revertido a un List:

Collection<Child> filteredChildren = 
    parents.stream()
           .flatMap(p -> p.getChildren()
                          .stream()
                          .filter(c -> c.getType().equals("A")))
           .collect(Collectors.toList());

Supongo que te gusta

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