0% encontró este documento útil (0 votos)
136 vistas18 páginas

Java - Programacion Funcional

La programación funcional se centra en qué se está haciendo en lugar de cómo. Java 8 introdujo expresiones lambda y streams para permitir la programación funcional. Las expresiones lambda permiten escribir funciones anónimas, mientras que los streams permiten aplicar funciones de forma anidada a un conjunto de datos.

Cargado por

devbarrerac
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
136 vistas18 páginas

Java - Programacion Funcional

La programación funcional se centra en qué se está haciendo en lugar de cómo. Java 8 introdujo expresiones lambda y streams para permitir la programación funcional. Las expresiones lambda permiten escribir funciones anónimas, mientras que los streams permiten aplicar funciones de forma anidada a un conjunto de datos.

Cargado por

devbarrerac
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 18

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

https://github.com/sergarb1/JavaFuncional
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
System.out.println)
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

• numeros.stream()

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



https://docs.oracle.com/javase/8/docs/api/java/uti
l/stream/package-summary.html

https://www.oracle.com/technetwork/es/articles/j
ava/procesamiento-streams-java-se-8-2763402-esa
.html
• Cheat Sheets

https://www.jrebel.com/blog/java-streams-cheat-s
heet

https://programming.guide/java/lambda-cheat-she
et.html
Enlaces Interesantes (2)

Web “Arquitectura Java”


• https://www.arquitecturajava.com/java-stream-filter-
y-predicates/
• https://www.arquitecturajava.com/programacion-fu
ncional-java-8-streams/
• https://www.arquitecturajava.com/java-8-lambda-y-f
oreach-ii/
• https://www.arquitecturajava.com/programacion-fu
ncional-java-8-streams/

También podría gustarte