1
00:00:00,180 --> 00:00:03,810
Bien, veamos algunos ejemplos más sobre el map y el filter en optional.

2
00:00:03,870 --> 00:00:06,900
Para eso vamos a crear un par de clases relacionadas a computador.

3
00:00:06,990 --> 00:00:07,920
Nos vamos a Models.

4
00:00:08,250 --> 00:00:10,050
Vamos a crear procesador.

5
00:00:12,760 --> 00:00:13,540
Con el nombre

6
00:00:18,430 --> 00:00:19,780
que me toque transceptor.

7
00:00:23,750 --> 00:00:28,220
Okay, bien, algo simple y también fabricante.

8
00:00:32,240 --> 00:00:34,250
Qué iba a hacer el fabricante del procesador?

9
00:00:37,730 --> 00:00:41,060
Algo simple podré tener mucho más atributos, también lo transceptor.

10
00:00:44,490 --> 00:00:46,800
Ok, también pudrirte el constructor.

11
00:00:48,510 --> 00:00:49,230
Quién es Doit?

12
00:00:50,370 --> 00:00:56,190
Constructor perfecto hote con el nombre y en procesador va a tener el fabricante

13
00:01:01,620 --> 00:01:02,340
y el constructor.

14
00:01:05,850 --> 00:01:07,440
Nombre y el fabricante?

15
00:01:07,590 --> 00:01:07,930
Ok.

16
00:01:09,150 --> 00:01:10,800
Aunque también podría tener constructor vacío.

17
00:01:11,020 --> 00:01:12,390
Vamos a computador.

18
00:01:14,170 --> 00:01:14,830
Por acá.

19
00:01:15,940 --> 00:01:16,260
Veidt.

20
00:01:18,330 --> 00:01:19,160
Procesador.

21
00:01:20,860 --> 00:01:23,310
Procesador con método quieten, etcétera.

22
00:01:23,830 --> 00:01:24,900
Debajo de modelo.

23
00:01:25,870 --> 00:01:29,380
Generad gué, transceptor, procesador.

24
00:01:30,310 --> 00:01:32,350
Bien, vamos a ir a repositorio.

25
00:01:32,800 --> 00:01:35,500
Vamos a ir acá con puto repositorio.

26
00:01:35,920 --> 00:01:39,850
Vamos a crear el procesador con el fabricante para el computador ASUS.

27
00:01:40,330 --> 00:01:49,260
Entonces por acá vamos a tener procesador Pross igual new procesador.

28
00:01:51,490 --> 00:02:01,900
Por ejemplo, el nombre y nueve y nueve nueve mil ocho ochenta y ocho coma new fabricante con el nombre

29
00:02:02,800 --> 00:02:03,280
Intel.

30
00:02:05,570 --> 00:02:07,630
Hoy tenemos procesador con el fabricante.

31
00:02:07,750 --> 00:02:09,010
Voy a cortar esto.

32
00:02:11,240 --> 00:02:12,110
Lo cortamos.

33
00:02:12,200 --> 00:02:13,190
Lo dejamos acá.

34
00:02:15,590 --> 00:02:18,680
Computador ásus igual.

35
00:02:21,470 --> 00:02:23,030
Punto set procesador.

36
00:02:23,150 --> 00:02:26,450
Y pasamos ProZ y Newland.

37
00:02:26,540 --> 00:02:28,540
Pasamos a sus listas.

38
00:02:28,610 --> 00:02:29,450
Ahí tenemos la relación.

39
00:02:29,600 --> 00:02:32,810
También podríamos tener otra para computador, el MacBook Pro.

40
00:02:33,440 --> 00:02:35,700
Pero bien, vamos a dejar una con y otra sin.

41
00:02:35,840 --> 00:02:37,550
Y vamos a utilizar el map.

42
00:02:37,640 --> 00:02:43,730
El filter para poder convertir, como por ejemplo tener un computador, el ASUS y poder convertir este

43
00:02:43,850 --> 00:02:51,020
optional finalmente a un tipo por ejemplo CPU o procesador, o bien al fabricante o bien a un string

44
00:02:51,050 --> 00:02:53,240
con el nombre de fabricante a Intel, por ejemplo.

45
00:02:53,330 --> 00:02:56,330
Veamos como vamos a cerrar acá el ejemplo anterior.

46
00:02:57,640 --> 00:02:59,710
Y nos vamos a ir por acá.

47
00:02:59,770 --> 00:03:05,680
Vamos a copiar métodos or hells, lo copiamos, lo pegamos en ejemplo los renombrados.

48
00:03:08,360 --> 00:03:11,870
MAPP Pero también vamos a ver Filter, okay.

49
00:03:13,870 --> 00:03:18,730
Esto lo quitamos, lo quitamos, quitamos también, esto es todo acá.

50
00:03:20,320 --> 00:03:23,980
Quitamos el valor por defecto y partimos de esa base.

51
00:03:24,100 --> 00:03:24,520
Se fijan?

52
00:03:24,580 --> 00:03:30,040
Acá tenemos el computador, pero por ejemplo, no se quiero obtener el fabricante.

53
00:03:32,560 --> 00:03:33,370
Vamos a importar.

54
00:03:34,640 --> 00:03:35,210
Cómo lo hacemos?

55
00:03:35,300 --> 00:03:42,710
A partir de Rozz obtener fabricante bueno, utilizando un mapa, ir convirtiendo los elementos del optional

56
00:03:42,950 --> 00:03:48,550
del objeto computador hasta llegar al fabricante MAPP.

57
00:03:49,100 --> 00:03:56,950
Acá se emite el computador C C punto y lo se convertirá en qué procesador?

58
00:03:57,660 --> 00:04:08,900
Bien, ahora tenemos el procesador perfecto punto map p de procesador procesador pun to get fabricante.

59
00:04:09,140 --> 00:04:15,110
Vamos a ver, creo que nos pusimos el fabricante en procesador, no tenemos acá el fabricante factor

60
00:04:15,260 --> 00:04:15,800
trans z.

61
00:04:16,310 --> 00:04:18,170
Entonces por acá generate.

62
00:04:19,740 --> 00:04:21,750
Hiedras setter o qué?

63
00:04:21,840 --> 00:04:22,290
Ahora sí.

64
00:04:22,770 --> 00:04:23,940
Entonces regresamos.

65
00:04:24,070 --> 00:04:25,980
Guet, fabricante.

66
00:04:27,380 --> 00:04:28,920
Punto or el fru.

67
00:04:30,450 --> 00:04:31,590
Perfecto, entonces.

68
00:04:31,600 --> 00:04:36,510
Bueno, si lo encuentra, devuelve fabricante, si no lanza un excepción, de esta forma lo vamos a

69
00:04:36,510 --> 00:04:38,010
manejar, aunque también ya saben.

70
00:04:38,070 --> 00:04:44,070
Podría ser por el jet usando una prisión Landa devolver un objeto por defecto fabricante.

71
00:04:44,460 --> 00:04:46,050
Bien, esto lo vamos a simplificar.

72
00:04:46,920 --> 00:04:50,820
El objeto en este caso es de la clase computador

73
00:04:53,040 --> 00:04:54,130
2.2.2.

74
00:04:54,690 --> 00:04:59,640
Quitamos el punto y quitamos eso y el fabricante.

75
00:04:59,730 --> 00:05:02,640
Este método es de la clase procesador.

76
00:05:07,720 --> 00:05:08,500
Vamos a importar.

77
00:05:10,530 --> 00:05:14,400
Queda mucho mejor por acá.

78
00:05:14,580 --> 00:05:18,120
F de fabricante y F de fabricante.

79
00:05:22,840 --> 00:05:23,350
Se fijan?

80
00:05:23,710 --> 00:05:25,710
Hoy imprime punto.

81
00:05:26,050 --> 00:05:26,860
Qué nombre?

82
00:05:31,220 --> 00:05:37,460
Intel se fija entonces a partir del computador convertimos a un procesador de procesador, convertimos

83
00:05:37,460 --> 00:05:42,860
fabricante, lo obtenemos, imprime un nombre, pero también podremos convertir a un string, por ejemplo

84
00:05:43,400 --> 00:05:44,630
Punto Map.

85
00:05:45,950 --> 00:05:56,300
Acá tenemos el fabricante dos puntos punto guet nombre y acá convertimos a un string tipifican.

86
00:05:56,390 --> 00:05:59,330
Ahí lo vamos amoldando y acá f nomá.

87
00:06:04,240 --> 00:06:10,000
Inter convertimos un string con el nombre de fabricante, pero también en vez del OR es, podrían colocar.

88
00:06:11,160 --> 00:06:19,830
Por ejemplo, OR es simplemente que pasamos un valor por defecto desconocido.

89
00:06:24,060 --> 00:06:24,570
Intel.

90
00:06:24,780 --> 00:06:29,220
Perfecto, vámonos a MacBook Mapa.

91
00:06:29,790 --> 00:06:30,420
No tienen.

92
00:06:30,540 --> 00:06:32,670
Recuerden que solamente creemos para Asus.

93
00:06:32,970 --> 00:06:33,540
Vamos a ver.

94
00:06:35,440 --> 00:06:37,150
Desconocido se fijan?

95
00:06:37,300 --> 00:06:42,970
Claro, encuentra el computador, tiene una instancia, pero después, al convertir con el procesador

96
00:06:43,060 --> 00:06:47,590
retornÃ Anul a devolver un null, se genera un nocturnal empty vacío.

97
00:06:47,650 --> 00:06:53,690
Por lo tanto, el resto ya no se invoca hasta llegar al Hore Els y acá devuelve desconocido.

98
00:06:53,830 --> 00:06:54,820
Por qué vacío?

99
00:06:55,270 --> 00:07:00,670
Lo mismo con cualquier nombre que queramos buscar que no exista abecé.

100
00:07:03,840 --> 00:07:09,510
Desconocido te colocamos ásus lo va a encontrar.

101
00:07:10,780 --> 00:07:16,630
Dice que si inter explicar entonces usando el API optional super simple y conjunto con el stream también.

102
00:07:16,720 --> 00:07:19,690
Por qué sólo estamos buscando Canel filtrar en el repositorio?

103
00:07:19,840 --> 00:07:27,490
Super simple y filtrando, buscando en los atributos de la clase en clase relacionada también convirtiendo.

104
00:07:27,580 --> 00:07:32,890
En fin, me compliquemos un poco más el tema con un filter, por ejemplo acá en el fabricante.

105
00:07:33,100 --> 00:07:37,750
Antes de convertir a un string junto filter, acá se emite el fabricante.

106
00:07:38,530 --> 00:07:44,230
Entonces, si quiero filtrar que el fabricante sea solamente Intel, es decir, obtener el objeto,

107
00:07:44,380 --> 00:07:50,410
el computador, luego el procesador, luego el fabricante, pero que el fabricante sea Entel, sino

108
00:07:50,410 --> 00:07:53,530
que sea conocido Intel.

109
00:07:54,220 --> 00:07:54,640
Punto.

110
00:07:54,740 --> 00:07:59,110
Y cuales ignore keys f punto.

111
00:07:59,440 --> 00:08:00,490
Get nombre.

112
00:08:02,960 --> 00:08:05,760
Perdón, no puse R.F porque lo puse acá.

113
00:08:06,230 --> 00:08:14,060
Me acabo da cuenta entonces a poner fabricante acá fav de fabricante tiene que ser distinto fab s.

114
00:08:14,240 --> 00:08:17,720
Entonces filtramos que sea solamente intera bueno y vuelva a funcionar.

115
00:08:19,070 --> 00:08:25,520
áSus es Intel, así que está bien, pero qué pasa si modificamos el repositorio y en vez de que sea

116
00:08:26,000 --> 00:08:27,320
no sé, Intel acá?

117
00:08:28,130 --> 00:08:31,460
Por poner un ejemplo a MD y acá.

118
00:08:32,510 --> 00:08:36,130
Para que tenga sentido un Reisen 9.

119
00:08:36,230 --> 00:08:37,190
Un Reisen 9.

120
00:08:37,610 --> 00:08:38,160
Vamos a ver.

121
00:08:39,050 --> 00:08:39,800
Volvemos.

122
00:08:41,510 --> 00:08:42,410
Levantamos.

123
00:08:43,520 --> 00:08:48,860
Desconocida, claro, porque ataca perfecto, pues lo filtrÃ, es Intel, no retornÃ Forzo, por lo

124
00:08:48,860 --> 00:08:55,040
tanto, devuelve el original con un valor empty vacío, sin elemento, sin valor.

125
00:08:55,220 --> 00:08:59,180
Por lo tanto puede invocar este map para tener el fabricante al ser vacío.

126
00:08:59,300 --> 00:09:02,570
No se va a llamar y ser vacío or es desconocido.

127
00:09:03,200 --> 00:09:06,890
Ahora, obviamente, si colocamos a MD va a funcionar.

128
00:09:09,120 --> 00:09:17,370
Ahora es a mdia, pero bien, vamos a dejar como Intel llega también era solamente para el ejemplo Intel.

129
00:09:19,140 --> 00:09:23,780
Le enviamos el flat map, que estaría pendiente, pero para eso tendríamos que hacer algunos cambios,

130
00:09:23,940 --> 00:09:30,420
porque en realidad lo que hace Fragment versus el map es convertir y aplanar el flujo a un tipo optional

131
00:09:30,570 --> 00:09:32,190
al mismo tipo de flujo.

132
00:09:32,400 --> 00:09:34,740
En este caso el flujo sería el optional.

133
00:09:34,860 --> 00:09:36,570
Pero veámoslo mejor en acción.

134
00:09:37,200 --> 00:09:39,300
Primero vamos a modificar computador.

135
00:09:39,540 --> 00:09:43,330
Vamos a decir que el guet procesador retorna un optional.

136
00:09:43,520 --> 00:09:45,750
Entonces acá sería optional.

137
00:09:49,050 --> 00:09:49,890
Vamos a importar.

138
00:09:51,950 --> 00:09:55,490
Solamente modificamos los nyet, nada más que estamos utilizando en el mapa.

139
00:09:55,760 --> 00:10:03,800
Acá convertimos optional punto off o off nu lebleu en realidad, porque también podría ser nulo.

140
00:10:05,630 --> 00:10:11,570
Entonces convertimos el valor aún optional y modificamos lo jeeter, todos los jeeter, pero de procesador

141
00:10:11,660 --> 00:10:12,740
y también de fabricante.

142
00:10:13,280 --> 00:10:18,140
No vamos a profesor que tiene el fabricante, nos vamos al inquieto de fabricante por acá.

143
00:10:18,230 --> 00:10:20,270
Perfecto optional

144
00:10:24,790 --> 00:10:25,580
importamos.

145
00:10:27,190 --> 00:10:31,300
Neka también optional punto of no leiv.

146
00:10:34,800 --> 00:10:37,740
Bien, entonces, cómo cambiaría el ejemplo?

147
00:10:37,860 --> 00:10:38,640
Nos vemos acá.

148
00:10:39,830 --> 00:10:45,680
Bien, acá sería en realidad flat map y acá un flan más, porque el procesador retorna un optional,

149
00:10:45,800 --> 00:10:47,900
que en el fondo sería otro opcional.

150
00:10:48,620 --> 00:10:52,990
Y acá también el fabricante también devuelve otro opcional, se fija optional.

151
00:10:53,090 --> 00:10:55,280
Entonces acá vamos a cambiar a Fatma.

152
00:10:58,880 --> 00:10:59,570
inyectÃ también.

153
00:11:01,760 --> 00:11:02,300
Y eso es todo.

154
00:11:02,420 --> 00:11:07,220
Se fijan cuando el método GET o lo que retorna flama es un optional.

155
00:11:07,520 --> 00:11:14,090
Usamos un flan MAPP, pero si lo que devuelve es un objeto común y corriente, utilizamos un mapa igual

156
00:11:14,120 --> 00:11:15,830
que en el extrem, en el API String.

157
00:11:15,860 --> 00:11:20,120
Cuando trabajamos con MAP es porque devuelve un objeto común corriente, mientras que cuando trabajamos

158
00:11:20,120 --> 00:11:23,510
con flashmob devuelve un objeto que es un stream.

159
00:11:23,660 --> 00:11:24,680
Es otra corriente.

160
00:11:24,770 --> 00:11:28,910
Otro stream que se aplana dentro de la misma y se convierte en una única salida.

161
00:11:29,000 --> 00:11:32,270
Acá pasa exactamente lo mismo un optional dentro de un optional.

162
00:11:32,390 --> 00:11:34,490
Zaplana a una única salida.

163
00:11:35,090 --> 00:11:35,720
Vamos a ver.

164
00:11:38,380 --> 00:11:45,820
Intér Bueno, acá sí que es Mapp y está bien claro, porque el guet nombre es un objeto del tipo string,

165
00:11:45,940 --> 00:11:46,790
no es un optional.

166
00:11:47,200 --> 00:11:48,100
Entonces utilizamos Bapu.

167
00:11:48,190 --> 00:11:50,110
Si fuera un optional de un string.

168
00:11:50,170 --> 00:11:52,390
Claro, ahí tendríamos que utilizar un flan map.

169
00:11:52,600 --> 00:11:58,870
Entonces, con este ejemplo completo tenemos el flat map 2 flama, un filter y un mapa y un hot wheels.

170
00:11:59,110 --> 00:12:05,530
Se fijan cómo podemos ir encadenando de forma funcional utilizando el prisionero Lambda hasta llegar

171
00:12:05,590 --> 00:12:08,410
al resultado que queremos obtener, que sería el fabricante.

172
00:12:08,680 --> 00:12:09,310
Nada más.

173
00:12:09,410 --> 00:12:11,160
Continuamos en la siguiente clase.
