Lambdas udemy Flashcards

1
Q

Cuales son las caracteristicas de una lambda

A

Solo pueden tener un metodo abstracto
Se marcan con @FunctionalInterface, esto es opcional pero si se marcan debe de cumplir la condicion de un solo metodo abstracto
Pueden tener varios metodos default
Metodos de heredados de la clase object no son tomados en cuenta para su restriccion de un solo metodo abstracto=

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Para que sirve un consumer

A

Un consumer es una funcion lambda que nos permite aceptar un parametro y no regresar nada, esto nos sirtve por ejemplo para casos en donde queremos imprimir algo por ejemplo, podemos reutilizarlos por medio de andThen concatenar multiples consumers

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Describe la diferencia entre modo imperativo y funcional

A

Imperativo es como si tuvieramos a un jefe que nos estuviera presionando en como hacer las cosas, en cambio una manera funcional se refiere a que el jefe nos va a dejar hacer nuestro trabajo y no le importa el como, una de las caracteristicas de este approach es que es inmutable y en el caso del imperativo es mutable ya que por ejemplo en un for iteramos algo y lo podemos mutar mientras iteramos, en el funcional no se puede

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Cual es la diferencia entre una clase anonima y una lambda

A

Una clase anonima esta ligada a una clase, no se puede reutilizar, tiene mucho codigo boler plate y es la forma en como podiamos implementar interfaces funcionales en java 7 para abajo, una lambda nos da la posibilidad de reusabilidad, implementa el modo funcional en el cual no sabemos el como pero confiamos en que lo hace, implementa a @FunctionalInterface y en algunas ocaciones es mas leible

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Como se utiliza el metodo reduce en stream

A

Se utiliza utilizando dos parametros por ejemplo, le pasamos 1 y una funcion binaria, el uno es conocido como identidad y es el resultado de la operacion anterior o si es la primera operacion es el primer valor que se le colocara al primer argumento de la funcion binaria

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Para que sirve un Supplier

A

El supplier es lo contrario a un consumer, en este caso no vamos a recibir ningun parametro pero vamos a devolver el tipo definido en el generico del supplier
Supplier> students = () -> returnDB.getStudents():

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Para que sirve una funcion

A

Una funcion permite enviarle un tipo y que nos regrese otro tipo diferente, por ejemplo
Function longitudCadena = (palabra) -> palabra.lenght
En este caso le pasamos una cadena y nos regresa un numero que es la longitud de dicha cadena

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Cual es la diferencia entre una BiFunction y una Function

A

La bifunction nos permite especificarle dos parametros de entrada y un parametro de salida y la funcion solo nos permite un dato de entrada y otro de salida

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Que es un predicado

A

Un predicado nos sirve para pasar una condicion que resulte en verdadero o falso, por ejemplo
Si quisieramos evaluar los estudiantes que son mayores de edad
Predicate mayoresDeEdad = (student) -> student.getAge() >= 18:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Cual es la diferencia entre un predicado y un bi predicado

A

Un predicado recibe un parametro y regresa true o false y un bipredicado recibe dos parametros y regresa true o false

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Cual es la diferencia entre un biconsumer y un consumer

A

La diferencia es que el consumer solo recibe un parametro y el biconsumer recibe dos parametros, en ambos casos no regresa nada

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Que es lo que hace el metodo map de stream

A

Map va a hacer una correlacion entre una estructura de un tipo a otra o posiblemente a la misma, pero con una estructura nueva, la condicion en un mapeo es que si la lista original tiene 10, despues del mapero deberia de tener 10, por ejemplo digamos que tenemos una lista de estuduantes con nombre, edad y oficio, con 10 estudiantes y querenos representarla como un mapa que sea nombre: oficio, en ese caso resultara en un mapa de 10 elementos(tomando en cuenta que el nombre es diferente)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Cual es la diferencia entre un unaryOperator y una funcion

A

Es lo mismo, siempre y cuando reciba y regrese el mismo tipo, por ejemplo una funcion
Function printHelloWorld = (name) -> return “Hello World “ + name;
Es lo mismo que
UniaryOperatorprintHelloWorld = (name) -> return “Hello World “ + name;

Ya que recibe string y regresa string, por lo cual si son del mismo tipo podemos acortar la firma con el operador unario

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Cual es la diferencua entre un operador binario y una bifunction

A

La funcion binaria recibe dos parametros del mismo tipo y regresa tambien el mismo tipo

BiFunction
es igual que
BinaryOperator

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Que hace flat map

A
Un flat map lo que va a hacer es que si tienes una lista de listas, esas listas las hara una sola lista
Ejemploi
listaA = 1,2,3
listaB = 4,5,6
una flat lista seria asi
flatMap = 1,2,3,4,5,6
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Cual es el contexto de una lambda

A
  • Si estan dentro de un metodo, no podemos tener una -variable dentro de la lambda con el mismo nombre de la variable local ya que estan en el mismo contexto
  • Las variables locales no pueden ser modificadas dentro o fuera de una lambda si son utilizadas dentro de estas
  • Si son variables de instancias no aplica ninguna de las dos reglas, pero perdemos el thread safe
17
Q

Que significa que una variable sea efectivamente final

A

Significa que aunque no la declaremos como final, no puede ser modificada dentro de una lambda, alternatiamente puede ser declarada como final pero al utilizarla dentro de una lambda nos mandaria un error al querer reasignarla o modificarla

18
Q

Como se utiliza reduce

A

Queremos reducier el tamano de nuestra lista original a solo un regiustro, por ejemplo que nos de el estuduante con la mejor calificacion o al reces
lista.stream().reduce(bifunction) // si no ponemos identidad nos regresara un opcional

19
Q

A que se refiere el patron map filter reduce en streams con lambdas

A

Se refiere a que vamos a maperar nuestro stream a otro tipo, por ejemplo tenemos estudiantes y queremos mapearlos a sus edades, esas edades queremos filtrarlas a que solo sean los aprobados, al final queremos redicirlos a la suma de sus edades y despues reducirlos a su promedio de edad, debemos tener en cuenta que tipo de stream tenemos para poder hacer el filtro

20
Q

Para que sirven los Optionals en lambdas

A

Por ejemplo si queremos obtener el maximo de una lista y le indicamos una identidad de 0, si hay numeros mayores a 0 funcionara, pero si le pasamos una lista vacia y le dejamos la identidad de 0, el maximo sera 0, pero esto es incorrecto ya que no tenemos elementos en la lista por lo cual no deberia de utilizarce la identidad aqui, es cuando entran los opcionales, el opcional nos permite regresar optional vacio o ver si el opcional tiene el valor esperado, igual si queremos calcular el min, si ponemos identidad 0, este sera el minimo aunque no sea correcto ya que ese solo es la identidad y la lista puede ser 3,4,5,6, identity es igual al valor por default

21
Q

Que debemos tener en cuenta al calcular min y max en stream

A

que la identidad nos puede devolver un resultado no deseado, siempre que tengamos algo que pueda estar vacio o nos regrese un null podemos utilizar opcionals

22
Q

PAra que sirve limit y skip en streams

A

Limit es para limitar el numero de elementos que queremos procesar, por ejemplo en un paginador que solo se muestren paginas de 10 o de 15 etc, y skip es para saltarnos algunos de los elementos en el stream y esos no procesarlos