Filtro en la lista anidada utilizando la API de Java 8 Corriente

en:

No soy capaz de convertir a continuación fragmento en formato de flujo de Java 8.

List<String> titles = Arrays.asList("First Name", "Last Name");

for (FirstClass first : firstClassList) {
    for (SecondClass second : first.getSecondClassList()) {
        for (ThirdClass third : second.getThirdClassList()) {                   

            if(!titles.contains(third.getField())) {
                second.getThirdClassList().remove(third);
            }

        }
    }
}  

Estoy comparando lista anidada tercer nivel de objeto con la lista de entrada de campos. Si los campos no son coincidentes luego les estoy quitando de la lista original. ¿Cómo puedo lograr esto usando la sintaxis de Java 8.

Editar: Quiero Lista de FirstClass® a ser devuelto.

Misha:

No creo que las corrientes que ganar nada en este caso. Todo lo que hacemos es iterar sobre las listas anidadas y, o bien el ciclo mejorado o forEaches más directo.

Las mejoras pueden venir de usar removeIfpara modificar la lista y, posiblemente, se mueva la lógica rechazo fuera del bucle:

Predicate<ThirdClass> reject = third -> !titles.contains(third.getField());

firstClassList.forEeach(first ->
    first.getSecondClassList().forEach(second ->
        second.getThirdClassList().removeIf(reject)
    )
);

Supongo que te gusta

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