Sobes.tech
Junior — Middle

¿Puede explicar qué significa el término 'operación no terminal' al trabajar con flujos de datos en la API Stream?

sobes.tech AI

Respuesta de la IA

En la API de Stream de Java, las operaciones se dividen en terminales y no terminales (intermedias).

Una operación no terminal es aquella que devuelve un nuevo flujo (Stream) y no inicia el procesamiento de datos de inmediato. Sirve para construir una cadena de transformaciones, por ejemplo, filtrado, mapeo, ordenamiento.

Ejemplo de operaciones no terminales:

  • filter()
  • map()
  • sorted()
  • distinct()

Estas operaciones son perezosas: no se ejecutan hasta que se llama a una operación terminal, por ejemplo, forEach(), collect(), count().

Ejemplo:

List<String> list = Arrays.asList("a", "bb", "ccc");

list.stream()
    .filter(s -> s.length() > 1) // no terminal
    .map(String::toUpperCase)    // no terminal
    .forEach(System.out::println); // terminal

De esta manera, las operaciones no terminal permiten construir una cadena de transformaciones, y la terminal inicia la ejecución.