Spring - Java Streams
Spring - Java Streams
En este artículo vamos a tratar básicamente qué son los streams y qué nos permitenhacer.
Además veremos un pequeño ejemplo de la diferencia que hay entre una operación con un
loop normal y una hecha utilizando Streams.
VEAMOS UN EJEMPLO
Teniendo una lista con N cantidad de números, vamos a realizar una operación para
quedarnos sólo con los números que sean menores a X valor.
En este caso, el for itera la lista y tenemos que aclararle que, valor por valor, los
compare con el valor máximo y que en el caso de que sea menor lo agregue a lalista de
salida.
Ejemplo con Streams:
En este caso, a una lista le asignamos el return de un Stream al cual sólo le aclaramos
que tiene que realizar un filtro a través de una función lambda y que lotiene que
recolectar en una lista.
A modo de conclusión, podemos decir que los Streams facilitan mucho trabajar con
grandes cantidades de datos de forma muy prolija a la hora de escribirlo en el código.
Más allá de eso, también tiene beneficios y contras en cuanto a rendimientoy eso es algo
que estaremos tratando en algún próximo post.
Métodos stream
Es una interfaz que nos provee clases para procesar datos de manera funcional como flujode
datos, No es otra colección.
También nos provee de una serie de métodos de orden superior (funciones que reciben unao más
funciones y retornan otra función o un objeto).
Estas funciones nos ayudan a transformar, filtrar y reducir una colección dada.
(Object.equals(Object))
Function
Es una función que toma los parámetros, los procesa o los opera.
Ejemplo Tradicional: a cada elemento de la colección se le multiplica por dos y seagrega a
una nueva colección.
Predicate
Es una función que toma los parámetros y evalúa si cumple con la condición indicada. Ejemplo
Tradicional: se evalúa cada elemento de la colección y si es par se agrega a unanueva colección.
Consumer
Es una función que toma los argumentos y no retorna nada, simplemente procesa.Ejemplo
Tradicional: se envía cada elemento como argumento al método System.out.println().
forEach
Es un método que se usa para recorrer cada uno de los elementos y espera comoargumento
un Consumer, los Stream y Colecciones
poseen este método de recorrido.
Map
Es un método que se usa para transformar un objeto en otro aplicando una función y
retorna un nuevo flujo.
Filter
Este método filtra elementos en función de un predicado que se haya enviado.
Reduce
Este método recibe una función de acumulación y retorna un solo valor