Java – Introducción a la programación
funcional
Expresiones lambda y streams
¿Que es la programación funcional?
• Paradigma de programación:
Imperativo: damos ordenes
Usado habitualmente
Declarativo
Declaramos que queremos
• Programación funcional
Importa que se esta haciendo y no en como
¿Donde esta disponible?
• Multitud de lenguajes
●
Javascript y frameworks modernos (jQuery, Vue)
●
Python
●
PHP
●
Java a partir de Java 8
• Ejemplos de la presentación disponibles en
●
[Link]
Ejemplo Imperativo
Ejemplo Funcional
Expresiones Lambda (1)
• Expresiones Lambda
Compuesta por dos elementos, separados por una
flecha →
Es un función anónima
• Parte izquierda de la flecha →
Parámetros de entrada
Pueden ser varios
Expresiones Lambda (2)
• Parte derecha de la flecha →
Expresión Lambda.
Devuelve lo que devuelve la operación.
●
Comportamiento depende de donde se use
(filtrar, ordenar)
Permite ejecutar código (ejemplo, hacer un
[Link])
Expresiones Lambda en ejemplo
• filter(num → num > 10)
• A la izquierda de →
Son los parámetros (en este caso 1, llamado num)
• A la derecha de →
Operación a realizar
Se ejecutara tantas veces como elementos hay
Streams (1)
• Streams
Un conjunto de funciones que se ejecutan de
forma anidada
No es una estructura de datos, pero puede
modificar datos
Streams (2)
• Funcionamiento
Se aplica una función a un Stream.
La siguiente función anidada se aplica al flujo
modificado por la función anterior.
Este proceso se repite para todas las funciones.
Streams en el ejemplo
• [Link]()
Genera el stream de la lista
• Filter( num → num > 10 )
Filtra dejando solo elementos mayores que 10
• count()
Filtra dejando un entero con el número de
elementos
Otro ejemplo Imperativo
Otro ejemplo funcional
Explicación ejemplo (1)
• Expresión lambda
A la izquierda de →
2 parámetros tipo Persona p1 y p2
A la derecha de →
Expresión. Obtiene atributo nombre y los
compara mediante compareTo
Explicación ejemplo (2)
• Filter: filtra elementos según expresión Lambda
• Expresión Lambda
A la izquierda de → 1 parámetro p
A la derecha de → solo elementos que no
empiecen por M
Explicación ejemplo (3)
• ForEach: se aplica a cada elemento
●
En Este caso se aplica a los elementos que quedan
tras aplicar filter()
• Expresión Lambda
A la izquierda de → 1 parámetro p
A la derecha de → Acción a ejecutar, imprimimos
el nombre del parámetro
Enlaces Interesantes (1)
• Enlaces Streams y Lambda
●
[Link]
l/stream/[Link]
●
[Link]
ava/procesamiento-streams-java-se-8-2763402-esa
.html
• Cheat Sheets
●
[Link]
heet
●
[Link]
[Link]
Enlaces Interesantes (2)
Web “Arquitectura Java”
• [Link]
y-predicates/
• [Link]
ncional-java-8-streams/
• [Link]
oreach-ii/
• [Link]
ncional-java-8-streams/