Bien, veamos algunos ejemplos más sobre el map y el filter en optional.
Para eso vamos a crear un par de clases relacionadas a computador.
Nos vamos a Models.
Vamos a crear procesador.
Con el nombre
que me toque transceptor.
Okay, bien, algo simple y también fabricante.
Qué iba a hacer el fabricante del procesador?
Algo simple podré tener mucho más atributos, también lo transceptor.
Ok, también pudrirte el constructor.
Quién es Doit?
Constructor perfecto hote con el nombre y en procesador va a tener el fabricante
y el constructor.
Nombre y el fabricante?
Ok.
Aunque también podría tener constructor vacío.
Vamos a computador.
Por acá.
Veidt.
Procesador.
Procesador con método quieten, etcétera.
Debajo de modelo.
Generad gué, transceptor, procesador.
Bien, vamos a ir a repositorio.
Vamos a ir acá con puto repositorio.
Vamos a crear el procesador con el fabricante para el computador ASUS.
Entonces por acá vamos a tener procesador Pross igual new procesador.
Por ejemplo, el nombre y nueve y nueve nueve mil ocho ochenta y ocho coma new fabricante con el nombre
Intel.
Hoy tenemos procesador con el fabricante.
Voy a cortar esto.
Lo cortamos.
Lo dejamos acá.
Computador ásus igual.
Punto set procesador.
Y pasamos ProZ y Newland.
Pasamos a sus listas.
Ahí tenemos la relación.
También podríamos tener otra para computador, el MacBook Pro.
Pero bien, vamos a dejar una con y otra sin.
Y vamos a utilizar el map.
El filter para poder convertir, como por ejemplo tener un computador, el ASUS y poder convertir este
optional finalmente a un tipo por ejemplo CPU o procesador, o bien al fabricante o bien a un string
con el nombre de fabricante a Intel, por ejemplo.
Veamos como vamos a cerrar acá el ejemplo anterior.
Y nos vamos a ir por acá.
Vamos a copiar métodos or hells, lo copiamos, lo pegamos en ejemplo los renombrados.
MAPP Pero también vamos a ver Filter, okay.
Esto lo quitamos, lo quitamos, quitamos también, esto es todo acá.
Quitamos el valor por defecto y partimos de esa base.
Se fijan?
Acá tenemos el computador, pero por ejemplo, no se quiero obtener el fabricante.
Vamos a importar.
Cómo lo hacemos?
A partir de Rozz obtener fabricante bueno, utilizando un mapa, ir convirtiendo los elementos del optional
del objeto computador hasta llegar al fabricante MAPP.
Acá se emite el computador C C punto y lo se convertirá en qué procesador?
Bien, ahora tenemos el procesador perfecto punto map p de procesador procesador pun to get fabricante.
Vamos a ver, creo que nos pusimos el fabricante en procesador, no tenemos acá el fabricante factor
trans z.
Entonces por acá generate.
Hiedras setter o qué?
Ahora sí.
Entonces regresamos.
Guet, fabricante.
Punto or el fru.
Perfecto, entonces.
Bueno, si lo encuentra, devuelve fabricante, si no lanza un excepción, de esta forma lo vamos a
manejar, aunque también ya saben.
Podría ser por el jet usando una prisión Landa devolver un objeto por defecto fabricante.
Bien, esto lo vamos a simplificar.
El objeto en este caso es de la clase computador
2.2.2.
Quitamos el punto y quitamos eso y el fabricante.
Este método es de la clase procesador.
Vamos a importar.
Queda mucho mejor por acá.
F de fabricante y F de fabricante.
Se fijan?
Hoy imprime punto.
Qué nombre?
Intel se fija entonces a partir del computador convertimos a un procesador de procesador, convertimos
fabricante, lo obtenemos, imprime un nombre, pero también podremos convertir a un string, por ejemplo
Punto Map.
Acá tenemos el fabricante dos puntos punto guet nombre y acá convertimos a un string tipifican.
Ahí lo vamos amoldando y acá f nomá.
Inter convertimos un string con el nombre de fabricante, pero también en vez del OR es, podrían colocar.
Por ejemplo, OR es simplemente que pasamos un valor por defecto desconocido.
Intel.
Perfecto, vámonos a MacBook Mapa.
No tienen.
Recuerden que solamente creemos para Asus.
Vamos a ver.
Desconocido se fijan?
Claro, encuentra el computador, tiene una instancia, pero después, al convertir con el procesador
retornÃ Anul a devolver un null, se genera un nocturnal empty vacío.
Por lo tanto, el resto ya no se invoca hasta llegar al Hore Els y acá devuelve desconocido.
Por qué vacío?
Lo mismo con cualquier nombre que queramos buscar que no exista abecé.
Desconocido te colocamos ásus lo va a encontrar.
Dice que si inter explicar entonces usando el API optional super simple y conjunto con el stream también.
Por qué sólo estamos buscando Canel filtrar en el repositorio?
Super simple y filtrando, buscando en los atributos de la clase en clase relacionada también convirtiendo.
En fin, me compliquemos un poco más el tema con un filter, por ejemplo acá en el fabricante.
Antes de convertir a un string junto filter, acá se emite el fabricante.
Entonces, si quiero filtrar que el fabricante sea solamente Intel, es decir, obtener el objeto,
el computador, luego el procesador, luego el fabricante, pero que el fabricante sea Entel, sino
que sea conocido Intel.
Punto.
Y cuales ignore keys f punto.
Get nombre.
Perdón, no puse R.F porque lo puse acá.
Me acabo da cuenta entonces a poner fabricante acá fav de fabricante tiene que ser distinto fab s.
Entonces filtramos que sea solamente intera bueno y vuelva a funcionar.
áSus es Intel, así que está bien, pero qué pasa si modificamos el repositorio y en vez de que sea
no sé, Intel acá?
Por poner un ejemplo a MD y acá.
Para que tenga sentido un Reisen 9.
Un Reisen 9.
Vamos a ver.
Volvemos.
Levantamos.
Desconocida, claro, porque ataca perfecto, pues lo filtrÃ, es Intel, no retornÃ Forzo, por lo
tanto, devuelve el original con un valor empty vacío, sin elemento, sin valor.
Por lo tanto puede invocar este map para tener el fabricante al ser vacío.
No se va a llamar y ser vacío or es desconocido.
Ahora, obviamente, si colocamos a MD va a funcionar.
Ahora es a mdia, pero bien, vamos a dejar como Intel llega también era solamente para el ejemplo Intel.
Le enviamos el flat map, que estaría pendiente, pero para eso tendríamos que hacer algunos cambios,
porque en realidad lo que hace Fragment versus el map es convertir y aplanar el flujo a un tipo optional
al mismo tipo de flujo.
En este caso el flujo sería el optional.
Pero veámoslo mejor en acción.
Primero vamos a modificar computador.
Vamos a decir que el guet procesador retorna un optional.
Entonces acá sería optional.
Vamos a importar.
Solamente modificamos los nyet, nada más que estamos utilizando en el mapa.
Acá convertimos optional punto off o off nu lebleu en realidad, porque también podría ser nulo.
Entonces convertimos el valor aún optional y modificamos lo jeeter, todos los jeeter, pero de procesador
y también de fabricante.
No vamos a profesor que tiene el fabricante, nos vamos al inquieto de fabricante por acá.
Perfecto optional
importamos.
Neka también optional punto of no leiv.
Bien, entonces, cómo cambiaría el ejemplo?
Nos vemos acá.
Bien, acá sería en realidad flat map y acá un flan más, porque el procesador retorna un optional,
que en el fondo sería otro opcional.
Y acá también el fabricante también devuelve otro opcional, se fija optional.
Entonces acá vamos a cambiar a Fatma.
inyectÃ también.
Y eso es todo.
Se fijan cuando el método GET o lo que retorna flama es un optional.
Usamos un flan MAPP, pero si lo que devuelve es un objeto común y corriente, utilizamos un mapa igual
que en el extrem, en el API String.
Cuando trabajamos con MAP es porque devuelve un objeto común corriente, mientras que cuando trabajamos
con flashmob devuelve un objeto que es un stream.
Es otra corriente.
Otro stream que se aplana dentro de la misma y se convierte en una única salida.
Acá pasa exactamente lo mismo un optional dentro de un optional.
Zaplana a una única salida.
Vamos a ver.
Intér Bueno, acá sí que es Mapp y está bien claro, porque el guet nombre es un objeto del tipo string,
no es un optional.
Entonces utilizamos Bapu.
Si fuera un optional de un string.
Claro, ahí tendríamos que utilizar un flan map.
Entonces, con este ejemplo completo tenemos el flat map 2 flama, un filter y un mapa y un hot wheels.
Se fijan cómo podemos ir encadenando de forma funcional utilizando el prisionero Lambda hasta llegar
al resultado que queremos obtener, que sería el fabricante.
Nada más.
Continuamos en la siguiente clase.