1
00:00:00,180 --> 00:00:00,960
Bien, continuemos.

2
00:00:01,020 --> 00:00:06,030
Veamos un ejemplo del nuevo entre septón y cómo lo podemos editar con el OPTIONAL.

3
00:00:06,330 --> 00:00:10,410
Bien, vamos a crear los pacato en nuestro proyecto por acá.

4
00:00:10,500 --> 00:00:11,280
Ejemplo.

5
00:00:13,160 --> 00:00:18,230
Package Models Vamos a crear una clase.

6
00:00:20,940 --> 00:00:21,930
Por ejemplo, computador.

7
00:00:22,890 --> 00:00:25,470
Bien, íbamos a tener también otra clase.

8
00:00:26,100 --> 00:00:30,450
O más bien un РАМКАХ primero repositorio.

9
00:00:32,720 --> 00:00:34,370
Primero, una interfaz.

10
00:00:37,370 --> 00:00:38,270
Repositorio.

11
00:00:39,750 --> 00:00:45,000
De hecho, la podríamos reutilizar utilizando Generic Conté perfecto, un solo método.

12
00:00:45,150 --> 00:00:48,210
Un ejemplo simple va a retornar computador

13
00:00:50,640 --> 00:01:01,290
filtras bien por ejemplo por nombre puntico, más bien vamos a importar computador que ya lo tenemos

14
00:01:01,890 --> 00:01:08,400
tipifican un solo método filtrar nada más o buscar como queramos que recibe el nombre y devuelve un

15
00:01:08,400 --> 00:01:10,020
computador en particular.

16
00:01:10,470 --> 00:01:12,130
Lo siguiente crear esta clase.

17
00:01:13,050 --> 00:01:18,030
Entonces vamos a ir al new deada class computador repositorio.

18
00:01:25,480 --> 00:01:30,580
Implementas repositorio del tipo genérico computador

19
00:01:33,310 --> 00:01:34,480
implementamos el método.

20
00:01:36,770 --> 00:01:38,820
Ok, filtras bien.

21
00:01:41,900 --> 00:01:55,010
Computador va a tener un par de atributos Private String el nombre con toda esta bien privé Tink modelo

22
00:01:56,520 --> 00:01:57,530
Lletra Setter.

23
00:02:01,510 --> 00:02:02,260
2 2.

24
00:02:04,360 --> 00:02:05,310
Un constructor.

25
00:02:11,000 --> 00:02:13,510
Los dos podría tener uno vacío.

26
00:02:14,600 --> 00:02:22,220
Y por último, el tuis trenca, en caso de que queramos imprimir el objeto nombre más el modelo.

27
00:02:30,800 --> 00:02:33,590
Gomá Bien, el repositorio volvemos.

28
00:02:33,770 --> 00:02:34,130
Perdón.

29
00:02:34,220 --> 00:02:39,830
Acá vamos a crear un constructor para inicializa dato de ejemplo.

30
00:02:41,170 --> 00:02:43,210
Generad Constructor.

31
00:02:44,600 --> 00:02:47,040
Un atributo brevet.

32
00:02:47,900 --> 00:02:50,150
Listo, computador

33
00:02:53,030 --> 00:02:54,500
DataSource igual.

34
00:02:54,740 --> 00:02:56,390
New Array.

35
00:02:56,420 --> 00:02:56,870
Listo.

36
00:02:58,730 --> 00:02:59,600
Vamos a importar.

37
00:02:59,630 --> 00:03:00,170
Listo.

38
00:03:02,160 --> 00:03:02,260
De.

39
00:03:02,330 --> 00:03:02,510
Ya.

40
00:03:02,510 --> 00:03:02,800
Útil.

41
00:03:06,240 --> 00:03:07,890
DataSource punto ád.

42
00:03:09,850 --> 00:03:20,470
Ni un computador, por ejemplo, a sus roj y el modelo Strix G 512

43
00:03:23,290 --> 00:03:41,020
DataSource punto AD ni un computador MacBook Pro y el modelo MDB K 2 C y o lo que sea, cualquier cosa.

44
00:03:42,350 --> 00:03:43,870
Bien, ahí tenemos un repositorio.

45
00:03:43,990 --> 00:03:44,860
Lo inicializamos.

46
00:03:44,950 --> 00:03:52,400
Bueno, en el atributo, aunque también puede ser acá que incluso mejor acá en el constructor data DataSource.

47
00:03:52,720 --> 00:03:55,060
Igual esto lo voy a cortar.

48
00:04:02,270 --> 00:04:03,910
Bien, y comencemos con la búsqueda.

49
00:04:04,010 --> 00:04:04,610
Cómo sería?

50
00:04:04,670 --> 00:04:17,560
Bueno de forma normal, con un foro usando un foro computador C 2 punto de DataSource if c punto, get

51
00:04:17,570 --> 00:04:24,200
nombre, punto y quarts y nore keys si es igual al valor que pasamos por argumento.

52
00:04:25,130 --> 00:04:29,300
A nombre, entonces nombre si son iguales.

53
00:04:31,670 --> 00:04:41,180
Return si encontramos el equipo, de lo contrario, si no lo encuentra retornamos 1 esta vaca se fijan

54
00:04:41,660 --> 00:04:47,480
entonces, claro, podría ser un valor, un objeto de computador, una instancia o bien una referencia

55
00:04:47,480 --> 00:04:47,840
nula.

56
00:04:48,140 --> 00:04:48,960
Vamos a probarlo.

57
00:04:49,280 --> 00:04:52,790
Vamos a crear en ejemplo cada ejemplo.

58
00:04:53,900 --> 00:05:01,320
Ya Klauss ejemplo repositorio con el método Main.

59
00:05:03,930 --> 00:05:09,680
Vamos a crear la instancia de servicio repositorio del tipo computador

60
00:05:12,590 --> 00:05:17,000
repositorio igual new computador repositorio.

61
00:05:20,860 --> 00:05:34,000
Computador vamos a llamar pecé igual repositorio punto filtrar, por ejemplo, buscar asus rojo perfecto

62
00:05:35,260 --> 00:05:40,200
shout vamos a imprimir ps punto get nombre.

63
00:05:41,500 --> 00:05:42,190
Vamos a probar.

64
00:05:42,850 --> 00:05:43,660
Levantamos.

65
00:05:45,050 --> 00:05:45,210
A?

66
00:05:45,800 --> 00:05:46,640
Funciona perfecto.

67
00:05:46,820 --> 00:05:49,040
Encuentra lo busca y retorna a la instancia.

68
00:05:49,460 --> 00:05:53,190
Pero qué pasa si colocamos a sus roj o solamente a sus.

69
00:05:53,210 --> 00:05:54,320
Por ejemplo, ásus.

70
00:05:56,960 --> 00:06:02,540
Lanza la excepción en Nopueden Trecet y eso es justamente lo que queremos evitar mediante el uso de

71
00:06:02,630 --> 00:06:03,110
optional.

72
00:06:03,350 --> 00:06:08,180
Estas situaciones lo estamos implementando con un repositorio ArrayList, pero esto podría venir de

73
00:06:08,300 --> 00:06:10,460
hace rato y lo podría manejar de igual forma.

74
00:06:10,610 --> 00:06:17,150
Hacemos una consulta si encontré el registro, creamos el objeto computador y pasamos los datos del

75
00:06:17,150 --> 00:06:17,690
registro.

76
00:06:17,960 --> 00:06:22,700
De lo contrario se devuelve un NULL o utilizando GÜN o readme como internet también.

77
00:06:22,820 --> 00:06:23,630
Misma situación.

78
00:06:23,810 --> 00:06:26,740
Y acá es inevitable lo Nippon 13:8.

79
00:06:26,810 --> 00:06:32,750
Cuando filtramos algún dato que no existe en nuestra información, en nuestra aplicación, es algo que

80
00:06:32,750 --> 00:06:34,910
tenemos que lidiar y poder manejar de alguna forma.

81
00:06:35,030 --> 00:06:37,160
Entonces lo más típico que podemos hacer?

82
00:06:37,370 --> 00:06:38,470
Bueno preguntar.

83
00:06:38,840 --> 00:06:50,660
IF Psé, si es distinto en un perfecto imprimimos acá es Shout.

84
00:06:51,890 --> 00:06:54,460
No se ven con otro.

85
00:06:55,490 --> 00:06:58,670
Ahí lo solucionamos utilizando neuf y validando.

86
00:06:58,760 --> 00:06:59,540
Nos encontró.

87
00:07:01,480 --> 00:07:02,010
Roj.

88
00:07:05,730 --> 00:07:12,150
Bien, funciona, así funciona, pero que esté realizando validaciones entonces con el API optional

89
00:07:12,270 --> 00:07:13,830
y con programación funcional.

90
00:07:13,880 --> 00:07:20,220
Pero este trabajo se hace mucho más simple y con diferentes caminos, opciones que podemos ir entregando

91
00:07:20,220 --> 00:07:20,790
al usuario.

92
00:07:20,910 --> 00:07:24,870
Hagamos el cambio, entonces nos vamos a ir a la interfaz lo primero.

93
00:07:25,050 --> 00:07:30,960
Ahora, en vez de computador va a devolver un not jonan de computador.

94
00:07:32,340 --> 00:07:34,350
Vamos a importar de llebaba útil.

95
00:07:35,910 --> 00:07:37,320
Vamos a ir a la implementación.

96
00:07:37,380 --> 00:07:39,300
Computador repositorio acá.

97
00:07:40,370 --> 00:07:41,480
Lo mismo optional

98
00:07:45,380 --> 00:07:47,130
importamos de llevao útil.

99
00:07:48,410 --> 00:07:48,580
Bien.

100
00:07:48,680 --> 00:07:53,280
Y acá devolvemos optional punto.

101
00:07:53,480 --> 00:07:53,840
Off.

102
00:07:57,220 --> 00:08:00,090
Lo encontramos devuelve una opcional del objeto.

103
00:08:00,220 --> 00:08:05,680
De lo contrario, optional punto, empty vacío.

104
00:08:07,230 --> 00:08:12,660
Ya estamos trabajando con el lápiz, vamos al ejemplo, al otro ejemplo acá.

105
00:08:14,140 --> 00:08:20,740
Acá sería optional de computador, psé.

106
00:08:21,370 --> 00:08:22,240
Vamos a importar.

107
00:08:24,520 --> 00:08:32,870
Y acá modificamos entonces, en vez de distinto nul sería punto is present de que devuelve un volcano.

108
00:08:33,410 --> 00:08:36,410
Entonces, si está presente, perfecto, llega.

109
00:08:36,420 --> 00:08:44,600
Invocamos el método quieto el objeto get punto guet nombre o el Tustin Hoggett modelo.

110
00:08:50,380 --> 00:08:52,150
Si me dicen bien.

111
00:08:54,160 --> 00:08:56,230
Me quitaré el toString porque es automático.

112
00:08:59,260 --> 00:09:06,700
Ahora, qué pasa si modificamos este ejemplo completamente, lo vamos a comentar y en vez de hacer esto,

113
00:09:07,030 --> 00:09:09,700
simplemente esto también lo voy a comentar.

114
00:09:11,190 --> 00:09:22,560
Sería repositorio punto filtrar asus rog punto if present.

115
00:09:22,990 --> 00:09:31,480
Entonces, si está presente hacer algo ahora si están usando ya 9 o superior y present or elso system

116
00:09:31,720 --> 00:09:32,760
punto out.

117
00:09:33,040 --> 00:09:34,750
2 punto punto print.

118
00:09:38,070 --> 00:09:39,120
De lo contrario.

119
00:09:46,480 --> 00:09:47,230
Nos encontró.

120
00:09:47,530 --> 00:09:48,430
Voy a bajar.

121
00:09:50,050 --> 00:09:56,770
Se fija la diferencia de forma funcional versus de forma secuencial o normal, utilizando LIF.

122
00:09:56,950 --> 00:10:00,490
Hay un cambio rotundo y nos aseguramos de que nunca ocurrir.

123
00:10:00,610 --> 00:10:02,080
El famoso порно intercepto.

124
00:10:05,400 --> 00:10:10,770
Incluso podríamos utilizar bastante más el ejemplo si nos vamos a computador repositorio acá.

125
00:10:11,700 --> 00:10:20,900
Esto lo podemos comentar y podríamos utilizar expresiones Lanta, entonces Rotor la lista DataSource

126
00:10:21,330 --> 00:10:26,070
Punto Stream lo convertimos a un stream.

127
00:10:26,490 --> 00:10:32,760
Punto Filter Acá se emite el objeto computador, la flecha.

128
00:10:33,270 --> 00:10:34,140
Y esto acá.

129
00:10:35,420 --> 00:10:36,230
El predicado.

130
00:10:39,910 --> 00:10:40,660
Voy a bajar.

131
00:10:40,990 --> 00:10:41,650
Punto.

132
00:10:41,830 --> 00:10:44,200
Obtenemos uno solo con el fin.

133
00:10:44,320 --> 00:10:46,000
First ó find n.

134
00:10:47,840 --> 00:10:49,880
Recuerden que devuelve un optional.

135
00:10:52,760 --> 00:10:55,310
Mucho más simple, con programación funcional.

136
00:10:55,900 --> 00:10:57,730
Estas líneas versus estas de acá.

137
00:10:58,360 --> 00:11:04,750
Recuerden que Find First devuelve un optional, devuelve el primer elemento que se encuentra como un

138
00:11:04,750 --> 00:11:05,260
opcional.

139
00:11:05,350 --> 00:11:06,950
O bien una opción al vacío.

140
00:11:07,090 --> 00:11:09,850
En caso de que nos encuentre en el stream un ente.

141
00:11:10,240 --> 00:11:10,690
Por lo tanto.

142
00:11:10,720 --> 00:11:12,520
Esto sería exactamente igual a esto de acá.

143
00:11:12,790 --> 00:11:13,780
Pero más optimizado.

144
00:11:16,490 --> 00:11:17,210
Lo vamos a probar.

145
00:11:19,200 --> 00:11:25,130
Lo tenemos incluso también podríamos utilizar en vez de equals acá.

146
00:11:25,290 --> 00:11:27,620
Y cual sino de qué es contains?

147
00:11:31,010 --> 00:11:36,470
Ahora, si queremos que sea independiente, mayúscula y minúscula, convertimos el nombre a mayúscula

148
00:11:36,560 --> 00:11:37,250
o minúscula.

149
00:11:37,370 --> 00:11:45,410
Y este también 12.6 tú, tú longworth cais los dos a minúscula.

150
00:11:46,680 --> 00:11:49,320
Voy a copiar y el nombre también.

151
00:11:50,550 --> 00:11:51,900
Ahora volvemos.

152
00:11:52,960 --> 00:11:54,350
Y pueden buscar solamente por sus.

153
00:11:57,460 --> 00:12:01,480
Y diré contrar al mismo ásus rojo ó por rojo.

154
00:12:04,120 --> 00:12:09,160
Se fijan, acá está en minúscula, lo encuentra diciendo que está en mayúscula.

155
00:12:09,920 --> 00:12:10,900
Entonces queda mucho mejor.

156
00:12:11,230 --> 00:12:11,830
Nada más.

157
00:12:11,890 --> 00:12:13,850
Continuamos en la siguiente clase.
