domingo, 2 de mayo de 2021

Agreggate Operations


Las Aggregate Operations o operaciones agregadas son palabras muy comunes cuando se habla de lambdas.

¿Pero qué son las Aggregate Operations?

De acuerdo con la documentación de oracle, parecen ser como los Iterators, pero tienen muchas diferencias fundamentales:

  • Las Aggregate Operations utilizan una Iteración interna: estas operaciones no contienen un método como next() que indican a los iteradores como procesar el siguiente elemento de una colección. Con la delegación interna, su aplicación determina qué colección itera, pero el JDK determina cómo iterar la colección. Con la iteración externa, su aplicación determina qué colección itera y como la itera. Sin embargo, la iteración externa solo puede iterar sobre los elementos de una colección de forma secuencial. La iteración interna no tiene esta limitación. Puede aprovechar más fácilmente la computación paralela (parallel computing), que implica dividir un problema en subproblemas, resolver esos problemas simultáneamente y luego combinar los resultados de las soluciones a los subproblemas. 
  • Las aggregate Operations procesan elementos de un Stream: Estas operaciones procesan los elementos de un stream, no directamente de una Collection, por lo mismo son llamadas stream operations.

  • Las aggregate Operations soporta comportamientos como parámetros: Puedes especificar una lambda como un parámetro para la mayoría de las operaciones agregadas. Esto permite que personalices el comportamiento en particular de una aggregate operation.

Ejemplo de aggregate Operations

Java soporta muchas aggregate operations como: 
  • filter
  • map
  • limit
  • find
  • match
  • forEach
  • max
  • min
  • peek
  • of
  • reduce
  • sorted
  • sum
  • y muchas otras, incluyendo variantes de esas operaciones.