API Stream
Las estructuras que soportan esta nueva API se encuentran en el paquete [Link] y en especial,
la interface [Link] define un Stream.
La API nos permite realizar operaciones sobre colecciones de datos usando el modelo
filtro/mapeo/reducción, en el cual se seleccionan los datos que se van a procesar (filtro), se convierten a
otro tipo de dato (mapeo) y al final se obtiene el resultado deseado (reducción).
Existen versiones “primitivas” de Stream que evitan el Autoboxing y Unboxing innecesario, mejorando el
desempeño de las aplicaciones:
o [Link] → Stream cuyos elementos son tipos de dato double.
o [Link] → Stream cuyos elementos son tipos de dato int.
o [Link] → Stream cuyos elementos son tipos de dato long.
Java SE 8 introduce una nueva clase utilitaria llamada [Link] que provee métodos
estáticos que retornan los recolectores más usados. Dichos recolectores pueden ser agrupados en 3
tipos:
Reducción y resúmen: Reducen el Stream y permite obtener valores agregados como cantidad de
elementos, sumas, promedios, etc.
Agrupamiento: Agrupa elementos en un Map usando una “función de clasificación”, que permite
establecer a qué grupo pertenece cada elemento.
Particionamiento: Agrupamiento donde la función de clasificación es un predicado y por lo tanto agrupa
los elementos en un Map de dos llaves: false y true
Usando el API Stream
El API Stream proporciona un montón de operaciones que los desarrolladores
pueden usar para consultar datos en colecciones. Las operaciones de Stream
pueden ser de dos tipos -- operación intermedia u operación final.
Operaciones intermedias son funciones que producen otros flujos a partir de
uno existente como filter, map, sorted, etc.
Operaciones terminales son funciones que no generan un flujo como
resultado collect(toList()), forEach, count, etc.
Las operaciones intermedias te permiten construir la tubería que se ejecutará
cuando llames a una operación final. Aquí se muestran la list de funciones que
son parte del API Stream.
[Link]