Bienvenidos.
Continuamos con el operador Flat Map.
Vamos a ver la diferencia también contra versus el mapa.
Bien, vamos a cerrar todo derecho, cerrar todo.
Nos vamos a ir al ejemplo filter este de acá.
Bien, entonces, en vez de utilizar el filter para filtrar, podríamos utilizar un flat map y modificar
lo primero vamos a dejar nombre fue dicho esto lo quitamos.
Entonces Fugit va a ser nuestro operador terminal.
Vamos a modificar el filter.
Vamos a usar un flat map.
Bien, es muy parecido al map.
De hecho, acá se emite el usuario.
Acá voy a quitar esto las llaves y tenemos que retornar un objeto, pero no es un objeto común y corriente,
no es un objeto como el usuario, como un string, no es otro flujo, debemos retornar un stream, entonces
al final lo que se devuelve es una salida distinta.
Y si de hecho el flat map devuelve o retorna varias salida por cada elemento, devuelve un stream separado.
Otra corriente.
Pero toda esa corriente, porque vamos a tener un string por cada elemento.
Finalmente se aplana en una sola corriente, es decir, después por debajo es flat map.
Lo que hace es tomar todo esto es trim y lo aplana en uno solo.
Esa es la diferencia.
Bien, vamos a filtrar por Pepe.
Entonces vamos a usar un if.
Entonces si u el usuario pun to keep nombre y cuál es?
Pues sería equals o equals ignore keys acá.
Pepe Entonces perfecto.
Si se cumple, vamos a devolver.
No el usuario ojo, porque si devolvemos el usuario que es un objeto común y corriente, lanza un error
de hecho para que lo vean visualmente.
Si colocamos ratón en el live de U y acá ratón o también el usuario marca error porque lo que tengo
que devolver es un stream y no un usuario, se fijan un stream de usuario.
Entonces vamos a modificar acá el stream.
Punto off de pero de un solo elemento u.
Es decir, convertimos el objeto usuario en un stream y por cada uno recuerden que se emite cada elemento.
Cada uno va a tener una salida distinta, una sola entrada y por cada entrada una salida diferente,
un stream diferente.
Ahora, qué pasa si no existe o si no coincide?
No es Pepe, que sería como el else.
Acá retornamos un stream vacío.
Entonces trim.
Punto empty.
Es decir, creamos un stream sin elemento vacío.
Y eso es todo.
Y al final sería lo mismo que el filter filtra, retorna el elemento encontrado como un stream.
Si no vacío, no devuelve nada.
Por lo tanto, no se va a emitir ningún elemento en el stream cuando es vacío.
Es como si no existiera y estos elementos se van a aplanar en una sola corriente.
Es decir, en realidad estos stream se van a planear en un solo stream.
Eso es lo que hace la palabra simple.
El map versus el flat map.
El map devuelve un objeto, un objeto común y corriente.
Por ejemplo, si el stream es de usuario, devuelve un objeto usuario modificado.
Por ejemplo, es flama.
A diferencia, devuelve un stream de su objeto.
Otro flujo.
Otra salida.
Listo.
Vamos a ejecutar.
Pepe Mena y Pepe García, mismo resultado que Filter.
De hecho, que muestra dos veces por el hecho y por el PIC, pero se fijan, no aparece los demás elementos
porque son empty.
Por lo tanto no se emiten.
De hecho, si modificamos acá, voy a comentar en vez de usar el for each como terminal.
Usamos nombres punto count y lo vamos a imprimir.
Entonces Shout
debería mostrar dos, dos elementos.
TPM, NPP García.
Otra forma de filtrar utilizando Flat nada.
Nada más.
Continuamos en la siguiente clase.