Sobes.tech
Junior

¿En qué consiste la idea principal de la API Stream en Java?

sobes.tech AI

Respuesta de la IA

La idea principal de la API de Streams es proporcionar una forma declarativa de procesar colecciones de datos. En lugar del enfoque imperativo iterativo con control explícito de bucles y estados, los streams permiten describir qué hacer con los datos (filtrado, transformación, agregación), dejando la implementación cómo hacerlo en la API.

Conceptos clave:

  • Inmutabilidad: Los streams no modifican la fuente de datos original. Las operaciones del stream crean nuevos streams o resultados.
  • Lazy evaluation: Muchas operaciones del stream, como filter() y map(), son intermedias. No se ejecutan hasta que se llama a una operación terminal, como collect() o forEach(). Esto permite optimizar la ejecución.
  • Pipeline: Las operaciones del stream pueden combinarse en un pipeline. Cada elemento pasa por el pipeline de forma secuencial o paralela.
  • Procesamiento paralelo: Los streams están diseñados para facilitar el procesamiento paralelo de datos, a menudo con cambios mínimos en el código (parallelStream()).

Ventajas:

  • Código más legible y expresivo para operaciones complejas con colecciones.
  • Facilidad para paralelizar.
  • Eliminación de código boilerplate asociado a iteraciones.
// Ejemplo: Filtrado y transformación de una lista de cadenas
List<String> nombres = Arrays.asList("Alice", "Bob", "Charlie", "David");

List<Integer> longitudes = nombres.stream()
                             .filter(nombre -> nombre.startsWith("A")) // Operación intermedia
                             .map(String::length)             // Operación intermedia
                             .collect(Collectors.toList());   // Operación terminal

// longitudes contendrá [5]