1
00:00:00,210 --> 00:00:00,870
Bienvenidos.

2
00:00:00,930 --> 00:00:04,290
Vamos a ver otro ejemplo de Flat Map para profundizar un poco más.

3
00:00:04,380 --> 00:00:10,320
La idea es tener las personas una lista y cada persona va a tener facturas una o más.

4
00:00:10,470 --> 00:00:16,020
Y la idea es a través de las personas obtener todas las facturas de venta.

5
00:00:16,210 --> 00:00:18,450
Bien, mejor veamos el ejemplo para que quede un poco más claro.

6
00:00:18,690 --> 00:00:20,880
Vamos a cerrar lo primero.

7
00:00:20,940 --> 00:00:23,550
Bueno, ya tenemos usuario o la persona.

8
00:00:23,640 --> 00:00:26,190
Vamos a crear la clase factura.

9
00:00:30,240 --> 00:00:31,020
Pero había simple.

10
00:00:31,110 --> 00:00:33,300
Solamente con la descripción.

11
00:00:33,390 --> 00:00:39,420
Bueno, igual puede tener items con el producto, con la cantidad de producto a comprar, el producto

12
00:00:39,420 --> 00:00:40,380
con el precio.

13
00:00:40,470 --> 00:00:40,830
En fin.

14
00:00:41,010 --> 00:00:48,480
Y a partir de los usuarios listar todas las facturas usando flat map private string.

15
00:00:50,460 --> 00:00:53,850
Descripción lo que transceptor.

16
00:00:57,570 --> 00:00:58,090
Ok.

17
00:00:58,920 --> 00:01:04,350
También puede tener el detalle, pero como decía, lo vamos a omitir para simplificar y nos vamos a

18
00:01:04,350 --> 00:01:05,940
ir a persona o usuario.

19
00:01:06,390 --> 00:01:14,160
Acá vamos a crear un nuevo atributo de bait del tipo list de factura

20
00:01:16,500 --> 00:01:17,490
facturas.

21
00:01:18,360 --> 00:01:19,080
Vamos a importar.

22
00:01:19,110 --> 00:01:19,590
Listo.

23
00:01:20,580 --> 00:01:33,840
De llebaba útil y en el constructor por acá despuntó facturas igual new ArrayList inicializamos la lista

24
00:01:33,840 --> 00:01:36,960
de facturas que faltaría tras setter.

25
00:01:39,210 --> 00:01:41,700
De factura, solamente factura.

26
00:01:43,140 --> 00:01:45,990
Pero en vez de sed vamos a tener a al factura.

27
00:01:46,350 --> 00:01:48,180
Entonces cambiamos al factura.

28
00:01:48,690 --> 00:01:57,230
Acá vamos a agregar una a una factura factura punto a factura.

29
00:02:01,510 --> 00:02:04,420
Listo, vamos a ir a crear nuestro ejemplo.

30
00:02:08,350 --> 00:02:09,270
Con el método main

31
00:02:13,000 --> 00:02:16,780
tanto Matt cree que flat mayoría tenemos de vamos a colocar.

32
00:02:16,870 --> 00:02:21,340
Factura factura bien y el método main

33
00:02:24,190 --> 00:02:32,680
bien, entonces vamos a crear un objeto usuario usuario 1 new usuario.

34
00:02:34,930 --> 00:02:39,130
Por ejemplo Allon do

35
00:02:41,640 --> 00:03:00,640
usuario o dos usuarios dos igual new usuario HTP Beres bien asterio 1 punto add factura new factura

36
00:03:02,170 --> 00:03:05,180
y podría pasar la descripción por el constructor.

37
00:03:05,320 --> 00:03:06,700
Entonces nos vamos a ir a factura.

38
00:03:07,450 --> 00:03:09,610
Vamos a tener acá un constructor.

39
00:03:10,900 --> 00:03:12,130
Que pase solamente.

40
00:03:12,240 --> 00:03:13,960
Descripción Perfecto.

41
00:03:14,500 --> 00:03:16,480
Bien, volvemos al ejemplo y acá.

42
00:03:18,220 --> 00:03:29,200
Compras tecnología o uno junto al factura new factura

43
00:03:31,900 --> 00:03:42,910
muebles usuario 2 Punto Add New Factura por ejemplo bicicleta

44
00:03:46,360 --> 00:03:50,140
usuario 2 Punto A factura New

45
00:03:53,830 --> 00:03:55,870
Nott Poco Lillehammer

46
00:03:58,570 --> 00:04:05,050
Vamos a tener una lista de usuarios vamos a importar list@ de ya útil

47
00:04:07,750 --> 00:04:17,800
usuarios igual arráez punto as list acabásemos usuario uno o uno coma o dos.

48
00:04:18,760 --> 00:04:19,420
Perfecto.

49
00:04:19,930 --> 00:04:20,160
Bien.

50
00:04:20,260 --> 00:04:26,200
Ahora, si quisiera imprimir o mostrar todas las facturas de venta de todos los usuario, tendríamos

51
00:04:26,230 --> 00:04:28,300
que realizar un for anidado.

52
00:04:28,420 --> 00:04:37,990
Por ejemplo, esto sería lo común y corriente sin usar el hadith trim usuario un punto de usuarios.

53
00:04:39,820 --> 00:04:48,700
Luego otro for anidado de factura f 2 punto u punto get facturas

54
00:04:52,210 --> 00:04:55,330
shout f punto quieto.

55
00:04:55,600 --> 00:04:57,190
Descripción Vamos a probar.

56
00:05:02,160 --> 00:05:05,310
Se fijan, acá tenemos todas las facturas de todos los usuarios.

57
00:05:05,370 --> 00:05:09,250
Podríamos tener muchas más, mucho más usuarios y cada uno con mucha factura.

58
00:05:09,840 --> 00:05:15,870
Y de esa forma listar todas las facturas de venta que los usuarios hayan comprado, por ejemplo, en

59
00:05:15,870 --> 00:05:18,000
algún almacén, en alguna tienda.

60
00:05:18,570 --> 00:05:18,700
Bien.

61
00:05:18,780 --> 00:05:21,870
Pero esto se puede simplificar utilizando el APIs stream.

62
00:05:22,410 --> 00:05:26,070
Entonces vamos a comenzar utilizando Flat Map.

63
00:05:26,640 --> 00:05:34,260
Entonces acá abajo usuarios punto stream convertimos a un stream punto flat map.

64
00:05:35,250 --> 00:05:44,160
Acá se emite el usuario, pero el usuario tiene la facturas o punto get facturas.

65
00:05:44,310 --> 00:05:47,130
Y recuerden, acá tenemos que devolver un stream.

66
00:05:47,250 --> 00:05:53,250
Es decir, por cada ítem que se emite, por cada usuario se devuelve una salida distinta, un stream

67
00:05:53,430 --> 00:05:54,990
diferente por cada ítem.

68
00:05:55,240 --> 00:05:57,030
Bueno, punto stream.

69
00:05:57,960 --> 00:06:03,630
Recuerden que qué facturas obtenemos una lista factura y como es una lista del tipo con lechon, le

70
00:06:03,630 --> 00:06:04,950
invocamos el método Stream.

71
00:06:05,130 --> 00:06:11,190
De esa forma convertimos el flujo de usuario a un flujo de la factura de los usuarios.

72
00:06:12,270 --> 00:06:12,930
Bajamos.

73
00:06:13,090 --> 00:06:15,630
Punto foreach y ahora mostramos.

74
00:06:15,780 --> 00:06:25,650
Ahora serían facturas shout F.N get in descripción explican con unas pocas líneas de código utilizando

75
00:06:25,650 --> 00:06:26,160
flat map.

76
00:06:26,400 --> 00:06:30,840
Nos ayuda a eliminar todo tipo de bucle o for anidados.

77
00:06:32,010 --> 00:06:35,190
Entonces levantamos y el resultado va a ser exactamente el mismo.

78
00:06:36,040 --> 00:06:39,180
Completa analogía Compra muebles bicicleta notebook gamer.

79
00:06:39,540 --> 00:06:41,610
Entonces esa la importancia también del fandom.

80
00:06:41,970 --> 00:06:45,360
Ahora, qué pasa si quiero tener también los datos de cliente acá en el forito?

81
00:06:45,570 --> 00:06:48,810
Porque al final lo que tenemos acá son las facturas, no los usuarios.

82
00:06:48,960 --> 00:06:53,010
Bueno, ahí tendríamos que crear la relación inversa, es decir, en factura.

83
00:06:53,070 --> 00:06:55,350
Además tener el usuario.

84
00:06:56,360 --> 00:07:06,320
TONCE orientÃ Privat tu usuario, tu usuario de la factura, vamos a tener los métodos Kitra setter

85
00:07:07,190 --> 00:07:14,750
por acá Generate Guiteras, CETES de usuario OK y listo.

86
00:07:14,840 --> 00:07:16,220
Ahí tenemos la relación inversa.

87
00:07:16,880 --> 00:07:23,900
Ahora volvemos al usuario y en el método ADD, cuando agregamos la factura creamos esta relación factura

88
00:07:23,960 --> 00:07:27,980
que se pasa por argumento punto set usuario.

89
00:07:28,980 --> 00:07:31,810
Y pasamos días también mentaria.

90
00:07:32,130 --> 00:07:34,860
Bueno, 10 corresponde al usuario en cuestión.

91
00:07:36,440 --> 00:07:42,410
Así establecemos la relación en ambos sentidos, es decir, en usuario agregamos la factura, pero a

92
00:07:42,410 --> 00:07:45,820
su vez en la factura agregamos el usuario, dice.

93
00:07:46,460 --> 00:07:47,720
Volvemos al ejemplo.

94
00:07:48,360 --> 00:07:56,060
Entonces, además quiero agregar acá al usuario concatenados acá, por ejemplo, punto con qat

95
00:07:58,880 --> 00:07:59,600
cliente.

96
00:08:01,430 --> 00:08:13,190
Voy a bajar acá punto con catt, f de la factura, punto quiet usuario, punto get nombre o iet apellido.

97
00:08:13,250 --> 00:08:17,710
Por ejemplo, aquí el nombre o los dos lo podemos concatenar o el string.

98
00:08:17,780 --> 00:08:20,150
Incluso el street muestra ambos.

99
00:08:20,420 --> 00:08:21,900
Entonces sería tu string.

100
00:08:23,030 --> 00:08:24,530
Tu string.

101
00:08:26,370 --> 00:08:26,850
Veamos.

102
00:08:30,950 --> 00:08:39,620
Compras Tecnología Cliente Johnno Mueble Cliente Jondo Bicicleta Pepe Pérez Notebook Gamer Pepe Pérez

103
00:08:39,860 --> 00:08:45,410
100 por ciento utilizando programación funcional con expresiones landa y además con pocas líneas de

104
00:08:45,410 --> 00:08:45,830
código.

105
00:08:46,040 --> 00:08:48,620
Ahora esto también se podría hacer de otra forma.

106
00:08:48,770 --> 00:08:57,290
Por ejemplo, convertir el flujo de usuario a una lista de factura a utilizando un mapa y después convertimos

107
00:08:57,590 --> 00:09:04,210
esta lista de factura a un stream de factura utilizando flat map solamente para que lo vean map.

108
00:09:04,820 --> 00:09:07,820
Acá se emite el usuario en cuestión.

109
00:09:08,060 --> 00:09:13,790
Entonces voy a convertir el stream de usuario a una lista de facturas del tipo list factura.

110
00:09:14,000 --> 00:09:15,380
Entonces simplemente quiero factura.

111
00:09:15,560 --> 00:09:18,640
Por lo tanto, no le invoco el método Stream no?

112
00:09:19,160 --> 00:09:22,790
Y acá sería una lista lista de factura.

113
00:09:22,910 --> 00:09:27,710
LF Y acá simplemente LF punto stream.

114
00:09:29,600 --> 00:09:34,610
Puntos trem y esto lo podemos simplificar con referencia de método.

115
00:09:36,130 --> 00:09:36,760
Usuario.

116
00:09:40,130 --> 00:09:43,940
Usuario 2.2.1 y quitémosle aparentes.

117
00:09:44,960 --> 00:09:48,200
Bien y acá lo mismo, pero aca sería list@.

118
00:09:51,160 --> 00:09:51,790
Listo.

119
00:09:52,070 --> 00:09:53,270
2 Punto, punto.

120
00:09:55,760 --> 00:10:00,280
Mtodos Trim resultó ser exactamente el mismo.

121
00:10:02,170 --> 00:10:10,450
Entonces, para resumir, el primer INVAP convierte los usuarios es Talita usuarios an stream del tipo

122
00:10:10,450 --> 00:10:17,380
list de factura y luego convertimos esta lista factura a un stream de factura con el map bien, pero

123
00:10:17,380 --> 00:10:20,180
lo deja como estaba más simple solamente con la Flam Map.

124
00:10:20,590 --> 00:10:25,420
Entonces quitamos esto o lo pueden comentar tal como lo teníamos en delante.

125
00:10:27,370 --> 00:10:34,090
El usuario u punto get facturas punto de stream en un solo paso.

126
00:10:35,100 --> 00:10:35,620
Y listo.

127
00:10:35,780 --> 00:10:39,080
Antes que se me olvide, quería ver un tema máquina de convención.

128
00:10:39,260 --> 00:10:40,880
Arreglar un pequeño detalle.

129
00:10:41,090 --> 00:10:42,290
Vamos a la clase usuario.

130
00:10:44,690 --> 00:10:51,630
Y en vez de facturas, acá ADT facturas en plural, se me olvidó de quitar la s es a la factura, porque

131
00:10:51,630 --> 00:10:57,050
agregamos de a una es en singular, más que nada bueno, como lo hemos visto en varios ejemplos.

132
00:10:57,110 --> 00:11:00,380
Entonces quitamos la S acá también y eso sería.

133
00:11:00,950 --> 00:11:06,380
Es decir, un detalle, pero al final un tema de convención de nombre.

134
00:11:06,680 --> 00:11:08,410
Nos vemos en la siguiente clase.
