Bienvenidos.
Vamos a ver otro ejemplo de Flat Map para profundizar un poco más.
La idea es tener las personas una lista y cada persona va a tener facturas una o más.
Y la idea es a través de las personas obtener todas las facturas de venta.
Bien, mejor veamos el ejemplo para que quede un poco más claro.
Vamos a cerrar lo primero.
Bueno, ya tenemos usuario o la persona.
Vamos a crear la clase factura.
Pero había simple.
Solamente con la descripción.
Bueno, igual puede tener items con el producto, con la cantidad de producto a comprar, el producto
con el precio.
En fin.
Y a partir de los usuarios listar todas las facturas usando flat map private string.
Descripción lo que transceptor.
Ok.
También puede tener el detalle, pero como decía, lo vamos a omitir para simplificar y nos vamos a
ir a persona o usuario.
Acá vamos a crear un nuevo atributo de bait del tipo list de factura
facturas.
Vamos a importar.
Listo.
De llebaba útil y en el constructor por acá despuntó facturas igual new ArrayList inicializamos la lista
de facturas que faltaría tras setter.
De factura, solamente factura.
Pero en vez de sed vamos a tener a al factura.
Entonces cambiamos al factura.
Acá vamos a agregar una a una factura factura punto a factura.
Listo, vamos a ir a crear nuestro ejemplo.
Con el método main
tanto Matt cree que flat mayoría tenemos de vamos a colocar.
Factura factura bien y el método main
bien, entonces vamos a crear un objeto usuario usuario 1 new usuario.
Por ejemplo Allon do
usuario o dos usuarios dos igual new usuario HTP Beres bien asterio 1 punto add factura new factura
y podría pasar la descripción por el constructor.
Entonces nos vamos a ir a factura.
Vamos a tener acá un constructor.
Que pase solamente.
Descripción Perfecto.
Bien, volvemos al ejemplo y acá.
Compras tecnología o uno junto al factura new factura
muebles usuario 2 Punto Add New Factura por ejemplo bicicleta
usuario 2 Punto A factura New
Nott Poco Lillehammer
Vamos a tener una lista de usuarios vamos a importar list@ de ya útil
usuarios igual arráez punto as list acabásemos usuario uno o uno coma o dos.
Perfecto.
Bien.
Ahora, si quisiera imprimir o mostrar todas las facturas de venta de todos los usuario, tendríamos
que realizar un for anidado.
Por ejemplo, esto sería lo común y corriente sin usar el hadith trim usuario un punto de usuarios.
Luego otro for anidado de factura f 2 punto u punto get facturas
shout f punto quieto.
Descripción Vamos a probar.
Se fijan, acá tenemos todas las facturas de todos los usuarios.
Podríamos tener muchas más, mucho más usuarios y cada uno con mucha factura.
Y de esa forma listar todas las facturas de venta que los usuarios hayan comprado, por ejemplo, en
algún almacén, en alguna tienda.
Bien.
Pero esto se puede simplificar utilizando el APIs stream.
Entonces vamos a comenzar utilizando Flat Map.
Entonces acá abajo usuarios punto stream convertimos a un stream punto flat map.
Acá se emite el usuario, pero el usuario tiene la facturas o punto get facturas.
Y recuerden, acá tenemos que devolver un stream.
Es decir, por cada ítem que se emite, por cada usuario se devuelve una salida distinta, un stream
diferente por cada ítem.
Bueno, punto stream.
Recuerden que qué facturas obtenemos una lista factura y como es una lista del tipo con lechon, le
invocamos el método Stream.
De esa forma convertimos el flujo de usuario a un flujo de la factura de los usuarios.
Bajamos.
Punto foreach y ahora mostramos.
Ahora serían facturas shout F.N get in descripción explican con unas pocas líneas de código utilizando
flat map.
Nos ayuda a eliminar todo tipo de bucle o for anidados.
Entonces levantamos y el resultado va a ser exactamente el mismo.
Completa analogía Compra muebles bicicleta notebook gamer.
Entonces esa la importancia también del fandom.
Ahora, qué pasa si quiero tener también los datos de cliente acá en el forito?
Porque al final lo que tenemos acá son las facturas, no los usuarios.
Bueno, ahí tendríamos que crear la relación inversa, es decir, en factura.
Además tener el usuario.
TONCE orientÃ Privat tu usuario, tu usuario de la factura, vamos a tener los métodos Kitra setter
por acá Generate Guiteras, CETES de usuario OK y listo.
Ahí tenemos la relación inversa.
Ahora volvemos al usuario y en el método ADD, cuando agregamos la factura creamos esta relación factura
que se pasa por argumento punto set usuario.
Y pasamos días también mentaria.
Bueno, 10 corresponde al usuario en cuestión.
Así establecemos la relación en ambos sentidos, es decir, en usuario agregamos la factura, pero a
su vez en la factura agregamos el usuario, dice.
Volvemos al ejemplo.
Entonces, además quiero agregar acá al usuario concatenados acá, por ejemplo, punto con qat
cliente.
Voy a bajar acá punto con catt, f de la factura, punto quiet usuario, punto get nombre o iet apellido.
Por ejemplo, aquí el nombre o los dos lo podemos concatenar o el string.
Incluso el street muestra ambos.
Entonces sería tu string.
Tu string.
Veamos.
Compras Tecnología Cliente Johnno Mueble Cliente Jondo Bicicleta Pepe Pérez Notebook Gamer Pepe Pérez
100 por ciento utilizando programación funcional con expresiones landa y además con pocas líneas de
código.
Ahora esto también se podría hacer de otra forma.
Por ejemplo, convertir el flujo de usuario a una lista de factura a utilizando un mapa y después convertimos
esta lista de factura a un stream de factura utilizando flat map solamente para que lo vean map.
Acá se emite el usuario en cuestión.
Entonces voy a convertir el stream de usuario a una lista de facturas del tipo list factura.
Entonces simplemente quiero factura.
Por lo tanto, no le invoco el método Stream no?
Y acá sería una lista lista de factura.
LF Y acá simplemente LF punto stream.
Puntos trem y esto lo podemos simplificar con referencia de método.
Usuario.
Usuario 2.2.1 y quitémosle aparentes.
Bien y acá lo mismo, pero aca sería list@.
Listo.
2 Punto, punto.
Mtodos Trim resultó ser exactamente el mismo.
Entonces, para resumir, el primer INVAP convierte los usuarios es Talita usuarios an stream del tipo
list de factura y luego convertimos esta lista factura a un stream de factura con el map bien, pero
lo deja como estaba más simple solamente con la Flam Map.
Entonces quitamos esto o lo pueden comentar tal como lo teníamos en delante.
El usuario u punto get facturas punto de stream en un solo paso.
Y listo.
Antes que se me olvide, quería ver un tema máquina de convención.
Arreglar un pequeño detalle.
Vamos a la clase usuario.
Y en vez de facturas, acá ADT facturas en plural, se me olvidó de quitar la s es a la factura, porque
agregamos de a una es en singular, más que nada bueno, como lo hemos visto en varios ejemplos.
Entonces quitamos la S acá también y eso sería.
Es decir, un detalle, pero al final un tema de convención de nombre.
Nos vemos en la siguiente clase.