Api Stream - Tensho97/Aprende-a-Aprender GitHub Wiki

Stream se define como una secuencia de elementos que provienen de una fuente que soporta operaciones para el procesamiento de sus datos:

  • De forma declarativa usando expresiones lambda.
  • Permitiendo el posible encadenamiento de varias operaciones, con lo que se logra tener un código fácil de leer y con un objetivo claro.
  • De forma secuencial o paralela (Fork/Join).

Las estructuras que soportan esta nueva API se encuentran en el paquete java.util.stream y en especial, la interface java.util.stream.Stream define un Stream.

Esta 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).

El siguiente ejemplo nos permite visualizar las tres (3) partes que componen un Stream:

  1. Fuente de información → La lista de transacciones
  2. Cero o más operaciones intermedias → Se puede apreciar la operación filter y la operación mapToInt, operaciones que serán explicadas más adelante en este mismo artículo.
  3. Operación terminal que produce un resultado o un efecto sobre los datos → Se puede apreciar la operación sum, la cual se explicará más adelante en este mismo artículo.
List transacciones = ...  
int  sum = transacciones
     .stream()  	
     .filter(t ->  t.getProveedor().getCiudad().equals(“Cali”))
     .mapToInt(Transaccion::getPrecio)
     .sum();


Autor: Richard