Continuamos.
Veamos el operador Filter vamos a copiar.
Bueno, cerramos y copiamos.
Vamos a pegar acá en ejemplos lo nombramos filter para filtrar y lo vamos a modificar.
El segundo map.
Bueno, creo que no necesario.
Vamos a aplicar un filtro.
Por acá, entonces, después del MAPP de este que convierte un string al tipo usuario, vamos a filtrar
por nombre.
Bueno, recuerden que Filter lo que recibe es una presión lanta del tipo prediqué.
Por lo tanto evalúa una expresión booleana y si es true va a filtrar estos datos, es decir, va a convertir
este flujo existente a un nuevo flujo solamente con los datos que coincidan con esta expresión.
Es decir, con los usuarios que tengan, por ejemplo, cierto nombre, cierto apellido o cierto, no
sé, identificador o lo que sea.
Bien, pero vamos a agregar algunos usuarios más.
Por ejemplo por acá a Pepe, otro Pepe cualquiera Pillo García Bien, vamos a filtrar solamente por
Pepe.
Entonces, uh.
Una presión blanda.
Bueno, recuerden que retorna true o false.
Un bolear no?
Pero se puede simplificar, ya que vamos a tener una sola línea.
Entonces vamos a comparar u punto.
Get nombre punto.
Y cuál es a lo que se llama Pepe?
Entonces el objeto usuario.
El atributo nombre mediante el metodo nyet puntuó equals, ya que es un estric y lo compramos con Pepe.
Entonces debería filtrar Pepe Mena y Pepe García y lo va a mostrar acá en el PIC.
Acá falta un paréntesis.
Me lo comí y eso vamos a levantar.
TPM, NPP García, DPN Pepe García.
Los primero recuerden que del PIK y lo segundo del foreach de la lista cuando convertimos.
Bien, simple.
Ahora veamos buscar un usuario o algún registro, lo que sea por algún identificador único y obtenerlo,
capturarlo y convertir este stream a un solo objeto.
Por ejemplo, al tipo usuario, en vez de que sea un string de usuario, una lista con dos o con más
que me entregue un solo usuario con la coincidencia.
Por ejemplo, a través de Leidy o a través de un identificador único.
Claro, porque Pepe Barretto en dos.
Entonces, claro, como el stream tendría dos elementos, tendré que escoger entre uno o el otro.
Aunque también se podría hacer, por ejemplo, tener el primero.
Bueno, veamos como sigue el cambio.
Vamos a copiar el filter.
Lo pegamos acá en ejemplo.
Le vamos a llamar single de único obtener un solo objeto, ok.
Esto lo cerramos y modificamos ésta.
Entonces, bueno, tendremos que cambiar el colectivo, la idea, capturar uno solo y por supuesto la
lista ya no es una lista.
Bueno, vamos paso a paso, vamos a cambiar.
En vez de colecta lo vamos a quitar.
Acá tenemos el stream.
Fin de buscar Wan of first, buscar primero.
Bueno, también está Eleni si se repite, por ejemplo, en este caso PP para obtener cualquiera, sino
el primero.
Bueno, y esto retorna el objeto usuario, pero como un optional, entonces en vez del list@, ya luego
voy a explicar el optional.
Por ahora lo dejamos así.
Obviamente no es una lista.
Por lo tanto, el foreach no va.
Entonces simplemente vamos a imprimir al usuario usuario.
Yaca vamos a quitar esto.
Talita.
Usuario es un opcional quien quienes fondo es objeto de usuario individual, pero está embebido o envuelto
en el objeto opcional.
Después lo vamos a ver más en profundidad.
Después vamos a tener una sección para explicar de qué se trata el optional.
Ahora lo vamos a utilizar.
Bueno, es una característica desde ya 8 que nos permite ver el objeto o anidar.
Por ejemplo, para obtenerlo, para saber si está vacío el optional Narcis de control se está presente.
Poder modificar.
Puedes filtrar ese cosa.
Por ahora lo vamos a obtener con el GET.
Obtenemos el usuario uno solo.
De esa forma obtenemos un único objeto.
Finalmente convertimos este flujo a un solo objeto del tipo usuario.
Bueno, va a encontrar a Pepe Mena, que es el primero de la conciencia Rann.
Si eligen Pepe Mena, bueno, acá lo muestra por el pique.
Y acá por el yeta Find First es un operador también final, ese terminal que lo que hace es convertir
nuestro flujo a un solo objeto.
Entonces, de esta forma buscar un objeto en particular dentro de una lista con la combinación del filter
y la combinación del find first.
Es super simple, una expresión booleana y después capturamos.
Acá tenemos a Pepe, encuentra a más de uno, pero púdrase por un Heidy, por un identificador único.
De hecho, podría modificar este ejemplo.
Le vamos a colocar dos, lo copiamos, lo pegamos, le ponemos two.
Y lo vamos a dejar más simple.
Por ejemplo.
Bueno, lo primero, vamos a quitar el pick.
Eso es lo primero.
Lo segundo.
Vamos a quitar esto de acá, es decir vecho.
Vamos a colocar usuario acá, usuario del tipo usuario.
Quiero tener el usuario perfecto.
Entonces invocamos.
Nombre punto find first offline first.
En realidad acá lo invocamos acá como un operador final y acá la invocamos.
Punto IET.
Y esto lo quitamos si quitamos esto, quitamos esto y solamente vamos a imprimir usuario, ya que el
nyet lo tenemos acá.
Entonces, con unas pocas líneas de código map filter, find first o tenemos un usuario de la lista
en particular.
Pero vamos a buscar ahora por el Heidy.
Vamos a agregar un cambio por acá.
Rivet in Integer Aire gué tranqu cetas por acá.
De Leidy OC.
Static int último día parten cero, incrementamos
perdón acá, último en minúscula.
Último minuscula último Heidy, entonces acá incrementamos último ayni un pré incremento y lo asignamos
entonces primeraparte en cero uno.
El primero, después dos y así vamos a buscar por Heidy, por ejemplo el Heidy.
3.
Pepa vamos a modificar esto en vez de por nombre guet Heidi.
Y cuáles?
3.
Debería encontrar a Pepa?
Uno, dos, tres.
Veamos.
Ptah a 1.
Pato.
Quiero buscar el último 1, 2, 3, 4, 5.
Pepe García.
Pepe García Buscar por Heidy usando filita Entonces la ventaja que el find first busca y la primera
coincidencia se sale del filters, es decir, deja de iterar y retorna ese objeto encontrado.
Por eso es un operador final o terminal.
Recuerden que igual que el map, el filter también es inmutable, por lo tanto retorna una nueva instancia
del stream.
Nada más.
Continuamos en la siguiente clase.