0% encontró este documento útil (0 votos)
42 vistas

Java 11. Streams

El documento habla sobre Streams y programación funcional en Java. Introduce el API de Streams de Java 8, el cual permite realizar operaciones sobre conjuntos de datos de forma funcional. Explica que la programación funcional se basa en tratar las funciones como objetos y que estas no deben tener efectos secundarios. Finalmente, destaca mejoras añadidas en Java 9 como los métodos takeWhile() y dropWhile() para seleccionar elementos de colecciones ordenadas.

Cargado por

areaderuser
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
42 vistas

Java 11. Streams

El documento habla sobre Streams y programación funcional en Java. Introduce el API de Streams de Java 8, el cual permite realizar operaciones sobre conjuntos de datos de forma funcional. Explica que la programación funcional se basa en tratar las funciones como objetos y que estas no deben tener efectos secundarios. Finalmente, destaca mejoras añadidas en Java 9 como los métodos takeWhile() y dropWhile() para seleccionar elementos de colecciones ordenadas.

Cargado por

areaderuser
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

Streams y programación

funcional
Streams

• Java 8 introdujo el API de Streams, el cual permite realizar


fácilmente todo tipo de operaciones sobre conjuntos de
datos, típicamente sobre colecciones.

• El API de Streams conlleva en sí mismo todo un paradigma


de programación, pues incorpora las principales
características de la programación funcional.

2
Streams
• La programación funcional se basa en tratar a las funciones
como objetos.

• Las funciones son transformaciones que se realizan, donde


lo importante es que el resultado que produce una función
dependa únicamente de la entrada a esa función.

• En la programación funcional se prefiere el uso de funciones


que no tengan efectos secundarios, es decir, funciones que
no modifiquen estados externos a su ámbito.

3
Streams
• Cuando utilizamos el API Streams es fundamental adoptar el
paradigma funcional.

• Si no lo hacemos así, lo que estamos haciendo es disfrazar


programación imperativa con Streams, convirtiendo un
código que era más fácil de entender con programación
iterativa en un código de difícil comprensión.

4
Streams
• Para ilustrar un ejemplo de antipatrón, supongamos que
tenemos una lista de nombres de persona y queremos saber
cuántas veces se repite cada nombre.

5
Streams
• Podríamos pensar que la solución podría consistir en un Map,
donde el nombre de la persona sería la clave y la frecuencia
de aparición el valor.

• A continuación crearíamos un Stream a partir de la lista y


comenzaríamos a iterar. La iteración consistiría en invocar el
método merge() de Map, el cual requiere tres parámetros: la
clave, el valor si la clave no existe, el valor si la clave existe.

6
Streams
• ¿Cuál es el problema de este código?

• Pues que en la lambda estamos cambiando el estado del


Map, que es una variable externa al Stream y esto es
justamente lo que no podemos hacer en el paradigma
funcional.

7
Streams
• Haciendo uso del paradigma funcional, la solución sería
como sigue:

8
Streams
• Por otro lado, pensemos que es preferible devolver el tipo
Collection que Stream.

• Si devolvemos un Stream estamos impidiendo que quien


recibe los datos pueda hacer una programación iterativa.

• En cambio, si retornamos un Collection dejamos las dos


posibilidades abiertas: puede iterar directamente la colección
o generar un Stream a partir de la colección.

9
Streams. Mejoras añadidas en Java 9
• A destacar los siguiente cuatro métodos:

• takeWhile() / dropWhile() son muy convenientes para


seleccionar elementos de colecciones que están ordenadas.
• takeWhile() selecciona los n primeros elementos mientras que
sea verdadera la condición que se le pasa. dropWhile() los n
últimos.

10

También podría gustarte