1
00:00:00,180 --> 00:00:00,820
Continuamos.

2
00:00:00,900 --> 00:00:03,600
Veamos el operador Filter vamos a copiar.

3
00:00:03,810 --> 00:00:05,730
Bueno, cerramos y copiamos.

4
00:00:05,850 --> 00:00:15,000
Vamos a pegar acá en ejemplos lo nombramos filter para filtrar y lo vamos a modificar.

5
00:00:15,120 --> 00:00:16,230
El segundo map.

6
00:00:16,500 --> 00:00:18,150
Bueno, creo que no necesario.

7
00:00:18,330 --> 00:00:19,860
Vamos a aplicar un filtro.

8
00:00:20,780 --> 00:00:28,430
Por acá, entonces, después del MAPP de este que convierte un string al tipo usuario, vamos a filtrar

9
00:00:28,460 --> 00:00:29,390
por nombre.

10
00:00:30,290 --> 00:00:35,870
Bueno, recuerden que Filter lo que recibe es una presión lanta del tipo prediqué.

11
00:00:35,960 --> 00:00:42,740
Por lo tanto evalúa una expresión booleana y si es true va a filtrar estos datos, es decir, va a convertir

12
00:00:42,740 --> 00:00:48,800
este flujo existente a un nuevo flujo solamente con los datos que coincidan con esta expresión.

13
00:00:48,980 --> 00:00:53,750
Es decir, con los usuarios que tengan, por ejemplo, cierto nombre, cierto apellido o cierto, no

14
00:00:53,750 --> 00:00:55,610
sé, identificador o lo que sea.

15
00:00:55,960 --> 00:00:58,610
Bien, pero vamos a agregar algunos usuarios más.

16
00:00:58,730 --> 00:01:06,950
Por ejemplo por acá a Pepe, otro Pepe cualquiera Pillo García Bien, vamos a filtrar solamente por

17
00:01:06,950 --> 00:01:07,270
Pepe.

18
00:01:07,670 --> 00:01:09,010
Entonces, uh.

19
00:01:09,950 --> 00:01:10,940
Una presión blanda.

20
00:01:11,000 --> 00:01:13,880
Bueno, recuerden que retorna true o false.

21
00:01:14,120 --> 00:01:14,810
Un bolear no?

22
00:01:15,020 --> 00:01:18,230
Pero se puede simplificar, ya que vamos a tener una sola línea.

23
00:01:18,320 --> 00:01:20,990
Entonces vamos a comparar u punto.

24
00:01:21,140 --> 00:01:23,270
Get nombre punto.

25
00:01:23,330 --> 00:01:25,610
Y cuál es a lo que se llama Pepe?

26
00:01:26,630 --> 00:01:27,740
Entonces el objeto usuario.

27
00:01:28,930 --> 00:01:33,860
El atributo nombre mediante el metodo nyet puntuó equals, ya que es un estric y lo compramos con Pepe.

28
00:01:34,510 --> 00:01:39,540
Entonces debería filtrar Pepe Mena y Pepe García y lo va a mostrar acá en el PIC.

29
00:01:40,180 --> 00:01:41,440
Acá falta un paréntesis.

30
00:01:41,530 --> 00:01:44,170
Me lo comí y eso vamos a levantar.

31
00:01:49,660 --> 00:01:52,120
TPM, NPP García, DPN Pepe García.

32
00:01:52,390 --> 00:01:57,970
Los primero recuerden que del PIK y lo segundo del foreach de la lista cuando convertimos.

33
00:01:58,060 --> 00:01:58,570
Bien, simple.

34
00:01:58,660 --> 00:02:05,010
Ahora veamos buscar un usuario o algún registro, lo que sea por algún identificador único y obtenerlo,

35
00:02:05,020 --> 00:02:08,050
capturarlo y convertir este stream a un solo objeto.

36
00:02:08,200 --> 00:02:14,590
Por ejemplo, al tipo usuario, en vez de que sea un string de usuario, una lista con dos o con más

37
00:02:14,830 --> 00:02:17,470
que me entregue un solo usuario con la coincidencia.

38
00:02:17,560 --> 00:02:21,790
Por ejemplo, a través de Leidy o a través de un identificador único.

39
00:02:22,000 --> 00:02:24,400
Claro, porque Pepe Barretto en dos.

40
00:02:24,550 --> 00:02:29,500
Entonces, claro, como el stream tendría dos elementos, tendré que escoger entre uno o el otro.

41
00:02:29,560 --> 00:02:32,290
Aunque también se podría hacer, por ejemplo, tener el primero.

42
00:02:32,410 --> 00:02:33,940
Bueno, veamos como sigue el cambio.

43
00:02:34,180 --> 00:02:36,040
Vamos a copiar el filter.

44
00:02:37,120 --> 00:02:38,890
Lo pegamos acá en ejemplo.

45
00:02:40,300 --> 00:02:46,410
Le vamos a llamar single de único obtener un solo objeto, ok.

46
00:02:48,030 --> 00:02:49,960
Esto lo cerramos y modificamos ésta.

47
00:02:50,590 --> 00:02:55,320
Entonces, bueno, tendremos que cambiar el colectivo, la idea, capturar uno solo y por supuesto la

48
00:02:55,320 --> 00:02:56,520
lista ya no es una lista.

49
00:02:56,640 --> 00:02:58,980
Bueno, vamos paso a paso, vamos a cambiar.

50
00:02:59,100 --> 00:03:01,230
En vez de colecta lo vamos a quitar.

51
00:03:01,800 --> 00:03:02,970
Acá tenemos el stream.

52
00:03:03,780 --> 00:03:08,030
Fin de buscar Wan of first, buscar primero.

53
00:03:08,520 --> 00:03:13,890
Bueno, también está Eleni si se repite, por ejemplo, en este caso PP para obtener cualquiera, sino

54
00:03:13,980 --> 00:03:14,610
el primero.

55
00:03:15,950 --> 00:03:24,230
Bueno, y esto retorna el objeto usuario, pero como un optional, entonces en vez del list@, ya luego

56
00:03:24,230 --> 00:03:25,340
voy a explicar el optional.

57
00:03:25,550 --> 00:03:26,940
Por ahora lo dejamos así.

58
00:03:27,380 --> 00:03:28,880
Obviamente no es una lista.

59
00:03:28,940 --> 00:03:30,710
Por lo tanto, el foreach no va.

60
00:03:30,890 --> 00:03:34,430
Entonces simplemente vamos a imprimir al usuario usuario.

61
00:03:35,700 --> 00:03:37,640
Yaca vamos a quitar esto.

62
00:03:37,790 --> 00:03:38,450
Talita.

63
00:03:44,370 --> 00:03:51,480
Usuario es un opcional quien quienes fondo es objeto de usuario individual, pero está embebido o envuelto

64
00:03:51,600 --> 00:03:53,100
en el objeto opcional.

65
00:03:53,340 --> 00:03:54,870
Después lo vamos a ver más en profundidad.

66
00:03:54,990 --> 00:03:58,500
Después vamos a tener una sección para explicar de qué se trata el optional.

67
00:03:58,590 --> 00:03:59,580
Ahora lo vamos a utilizar.

68
00:03:59,830 --> 00:04:05,010
Bueno, es una característica desde ya 8 que nos permite ver el objeto o anidar.

69
00:04:05,130 --> 00:04:11,280
Por ejemplo, para obtenerlo, para saber si está vacío el optional Narcis de control se está presente.

70
00:04:11,490 --> 00:04:12,510
Poder modificar.

71
00:04:12,750 --> 00:04:14,370
Puedes filtrar ese cosa.

72
00:04:14,820 --> 00:04:17,160
Por ahora lo vamos a obtener con el GET.

73
00:04:17,250 --> 00:04:19,320
Obtenemos el usuario uno solo.

74
00:04:20,040 --> 00:04:22,710
De esa forma obtenemos un único objeto.

75
00:04:22,770 --> 00:04:25,920
Finalmente convertimos este flujo a un solo objeto del tipo usuario.

76
00:04:26,680 --> 00:04:32,850
Bueno, va a encontrar a Pepe Mena, que es el primero de la conciencia Rann.

77
00:04:34,710 --> 00:04:37,980
Si eligen Pepe Mena, bueno, acá lo muestra por el pique.

78
00:04:39,580 --> 00:04:48,700
Y acá por el yeta Find First es un operador también final, ese terminal que lo que hace es convertir

79
00:04:48,760 --> 00:04:50,560
nuestro flujo a un solo objeto.

80
00:04:50,680 --> 00:04:56,980
Entonces, de esta forma buscar un objeto en particular dentro de una lista con la combinación del filter

81
00:04:57,580 --> 00:04:59,170
y la combinación del find first.

82
00:04:59,290 --> 00:05:03,160
Es super simple, una expresión booleana y después capturamos.

83
00:05:03,400 --> 00:05:09,220
Acá tenemos a Pepe, encuentra a más de uno, pero púdrase por un Heidy, por un identificador único.

84
00:05:09,310 --> 00:05:11,560
De hecho, podría modificar este ejemplo.

85
00:05:11,800 --> 00:05:16,690
Le vamos a colocar dos, lo copiamos, lo pegamos, le ponemos two.

86
00:05:17,810 --> 00:05:18,980
Y lo vamos a dejar más simple.

87
00:05:19,310 --> 00:05:19,920
Por ejemplo.

88
00:05:19,970 --> 00:05:22,190
Bueno, lo primero, vamos a quitar el pick.

89
00:05:24,290 --> 00:05:24,950
Eso es lo primero.

90
00:05:25,160 --> 00:05:26,090
Lo segundo.

91
00:05:26,270 --> 00:05:28,880
Vamos a quitar esto de acá, es decir vecho.

92
00:05:28,970 --> 00:05:35,150
Vamos a colocar usuario acá, usuario del tipo usuario.

93
00:05:37,110 --> 00:05:39,180
Quiero tener el usuario perfecto.

94
00:05:39,450 --> 00:05:41,010
Entonces invocamos.

95
00:05:41,070 --> 00:05:44,430
Nombre punto find first offline first.

96
00:05:44,520 --> 00:05:51,990
En realidad acá lo invocamos acá como un operador final y acá la invocamos.

97
00:05:52,530 --> 00:05:53,520
Punto IET.

98
00:05:54,950 --> 00:06:05,270
Y esto lo quitamos si quitamos esto, quitamos esto y solamente vamos a imprimir usuario, ya que el

99
00:06:05,270 --> 00:06:06,320
nyet lo tenemos acá.

100
00:06:07,160 --> 00:06:13,670
Entonces, con unas pocas líneas de código map filter, find first o tenemos un usuario de la lista

101
00:06:13,790 --> 00:06:14,460
en particular.

102
00:06:14,720 --> 00:06:16,880
Pero vamos a buscar ahora por el Heidy.

103
00:06:17,900 --> 00:06:20,390
Vamos a agregar un cambio por acá.

104
00:06:22,370 --> 00:06:27,980
Rivet in Integer Aire gué tranqu cetas por acá.

105
00:06:31,730 --> 00:06:32,960
De Leidy OC.

106
00:06:37,310 --> 00:06:45,020
Static int último día parten cero, incrementamos

107
00:06:47,750 --> 00:06:49,760
perdón acá, último en minúscula.

108
00:06:51,950 --> 00:07:02,360
Último minuscula último Heidy, entonces acá incrementamos último ayni un pré incremento y lo asignamos

109
00:07:02,540 --> 00:07:04,430
entonces primeraparte en cero uno.

110
00:07:04,550 --> 00:07:10,880
El primero, después dos y así vamos a buscar por Heidy, por ejemplo el Heidy.

111
00:07:10,940 --> 00:07:11,440
3.

112
00:07:11,930 --> 00:07:17,780
Pepa vamos a modificar esto en vez de por nombre guet Heidi.

113
00:07:19,550 --> 00:07:20,230
Y cuáles?

114
00:07:21,470 --> 00:07:21,920
3.

115
00:07:22,760 --> 00:07:24,050
Debería encontrar a Pepa?

116
00:07:24,560 --> 00:07:25,530
Uno, dos, tres.

117
00:07:26,630 --> 00:07:27,080
Veamos.

118
00:07:29,400 --> 00:07:32,010
Ptah a 1.

119
00:07:34,750 --> 00:07:35,170
Pato.

120
00:07:36,950 --> 00:07:40,880
Quiero buscar el último 1, 2, 3, 4, 5.

121
00:07:43,320 --> 00:07:44,070
Pepe García.

122
00:07:46,410 --> 00:07:52,110
Pepe García Buscar por Heidy usando filita Entonces la ventaja que el find first busca y la primera

123
00:07:52,110 --> 00:07:57,690
coincidencia se sale del filters, es decir, deja de iterar y retorna ese objeto encontrado.

124
00:07:57,750 --> 00:08:00,480
Por eso es un operador final o terminal.

125
00:08:00,570 --> 00:08:05,730
Recuerden que igual que el map, el filter también es inmutable, por lo tanto retorna una nueva instancia

126
00:08:05,850 --> 00:08:06,570
del stream.

127
00:08:06,690 --> 00:08:07,290
Nada más.

128
00:08:07,350 --> 00:08:09,420
Continuamos en la siguiente clase.
