Programación Funcional, Java 8 Streams
Programación Funcional, Java 8 Streams
CURSO JAVA 8
GRATIS
APUNTATE!!
Cada día la programación funcional está más de moda y Java 8 tiene un buen soporte para
ello .Sin embargo muchas veces no tenemos muy claro como aplicarla. Vamos a construir un
ejemplo sencillo. Supongamos que tenemos una lista de gastos de viaje diarios y la empresa
se hará cargo de todos ellos. Eso sí , si una vez sumado a los gastos el IVA el importe supera
los 100 euros la empresa no lo pagará ya que considerará que nos hemos excedido en lo que
gastamos en un día. Las operaciones que tendremos que realizar resumiendo son:
Solución Clásica
Bueno vamos a solventar este problema y para ello vamos a construir un Array de Objetos
de tipo Gasto y programar la lógica necesaria para que las operaciones nos funcionen
correctamente :
package com.arquitecturajava.streams;
www.arquitecturajava.com
Programación Funcional, Java 8 Streams
import java.util.ArrayList;
lista.add(new Gasto("A",80));
lista.add(new Gasto("B",50));
lista.add(new Gasto("C",70));
lista.add(new Gasto("D",95));
double totalPago=0;
if (g.getImporte()*1.21<100) {
totalPago=totalPago+ g.getImporte()*1.21;
}
}
System.out.println(totalPago);
www.arquitecturajava.com
Programación Funcional, Java 8 Streams
Revisando el código nos podemos dar cuenta que la lógica de negocio era bastante sencilla
de aplicar . Usamos un bucle for, recorremos el array y con una estructura if que chequea
si nos pasamos de 100 euros decidimos si acumulamos el importe o no el programa nos
imprimirá
242.0
Programación y Personas
A veces los programadores nos alejamos mucho del pensamiento clásico humano que es
mucho más lineal . Es decir es mas del estilo incrementamos a todos el IVA , eliminamos los
gastos que pasen de 100 euros ,sumamos el resto. De ahí que aprender a programar nunca
www.arquitecturajava.com
Programación Funcional, Java 8 Streams
haya sido algo “facil” sino mas bien todo lo contrario ya que los conceptos son difíciles de
encajar:
Java y Streams
Para poder solventar el problema que tenemos de una forma más amigable vamos a usar el
concepto de Java 8 Stream y programación funcional. Un Stream no es ni mas ni menos que
un conjunto de funciones que se ejecutan de forma anidada.
package com.arquitecturajava.streams;
import java.util.ArrayList;
www.arquitecturajava.com
Programación Funcional, Java 8 Streams
lista.add(new Gasto("A",80));
lista.add(new Gasto("B",50));
lista.add(new Gasto("C",70));
lista.add(new Gasto("D",95));
double resultado=lista.stream()
.mapToDouble(gasto->gasto.getImporte()*1.21)
.filter(gasto->gasto<100)
.sum();
System.out.println(resultado);
 
Como podemos ver hemos usado en este nuevo código un stream y lo hemos dividido en tres
pasos:
www.arquitecturajava.com
Programación Funcional, Java 8 Streams
Poco a poco tenemos que irnos haciendo con este tipo de programación que nos será muy
util
www.arquitecturajava.com