¿Te gustaría Java desde cero?
Tenemos los diplomados que necesitas.¡Haz clic aquí!



El concepto de Java Stream Reduce , es uno de los más importantes a nivel de programación funcional ya que cubre las operaciones de Reducción que nos permiten convertir una lista de elementos X en un resultado Y . Esto en un principio nos puede parecer un poco curioso pero es bastante útil.

Vamos a ver un ejemplo sencillo supongamos que disponemos de una lista de gastos y  queremos calcular su total. Normalmente en una situación clásica deberíamos utilizar un bucle for .

  1. package com.arquitecturajava;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Optional;
  5. import java.util.stream.Stream;
  6. public class Principal4 {
  7. public static void main(String[] args) {
  8. List<Integer> gastos= new ArrayList<Integer>();
  9. int total=0;
  10. gastos.add(100);
  11. gastos.add(200);
  12. gastos.add(300);
  13. for(int gasto : gastos) {
  14. total+=gasto;
  15. }
  16. System.out.println(total);
  17. }
  18. }

el resultado lo podemos ver salir por la consola:

600

Java Stream Reduce

Gracias a la programación funcional podemos realizar estas operaciones de una forma muy diferente nos podemos apoyar en el método reduce que recibe 2 parámetros un acumulador como primero y un elemento como segundo . De esta forma realiza una funcionalidad de “reducción” convirtiendo una lista de elementos en un único resultado.

Vamos a verlo en código :

  1. package com.arquitecturajava;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Optional;
  5. import java.util.stream.Stream;
  6. public class Principal3 {
  7. public static void main(String[] args) {
  8. List<Integer> gastos= new ArrayList<Integer>();
  9. gastos.add(100);
  10. gastos.add(200);
  11. gastos.add(300);
  12. gastos.stream().reduce((acumulador,numero)-> {
  13. return acumulador+numero;
  14. }).ifPresent(System.out::println);
  15. }

Esto nos permite realizar la misma operación y obtener el mismo resultado pero realizando un ejemplo de programación funcional. Todavía lo podemos simplificar más ya que podríamos delegar en la clase Integer y en su reference method  de sum que realiza la misma operación.

  1. gastos.stream().reduce(Integer::sum).ifPresent(System.out::println);

De igual manera que usamos el método de reducción para sumar números podemos usarlo también por ejemplo para combinar cadenas.

  1. package com.arquitecturajava;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Optional;
  5. import java.util.stream.Stream;
  6. public class Principal4 {
  7. public static void main(String[] args) {
  8. List<String> nombres= new ArrayList<String>();
  9. nombres.add(«juan»);
  10. nombres.add(«gema»);
  11. nombres.add(«maria»);
  12. nombres.stream().reduce(String::concat).ifPresent(System.out::println);
  13. }
  14. }

El uso de Java Stream Reduce nos puede ayudar en muchas situaciones a eliminar bucles y abordar situaciones de programación funcional que de otra forma serían complejas.

Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría Java desde cero?
Tenemos los diplomados que necesitas.¡Haz clic aquí!
About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax