Sobes.tech
Middle

¿Cuál es la diferencia entre Collection y Stream en Java?

sobes.tech AI

Respuesta de la IA

Collection — es una estructura de datos para almacenar elementos, que representa un grupo de objetos, como listas, conjuntos. Es un depósito de datos enfocado en la gestión de elementos.

Stream — es una secuencia de elementos de una fuente (por ejemplo, una colección), que soporta operaciones para procesar y analizar estos elementos en un estilo funcional. No almacena datos, sino que simplemente representa un flujo de datos para realizar operaciones.

Las principales diferencias:

  • Propósito: Collection - almacenamiento de datos, Stream - procesamiento de datos.
  • Cambio de estado: Las operaciones sobre Collection generalmente cambian su estado. Las operaciones de Stream no cambian la fuente de datos original.
  • Reutilización: Collection puede usarse varias veces. Stream suele ser de un solo uso después de realizar una operación terminal.
  • Lazy evaluation: Las operaciones sobre Stream se ejecutan de manera "perezosa" (solo al llamar a una operación terminal), lo que puede ser eficiente para conjuntos de datos grandes. Las operaciones en Collection se ejecutan inmediatamente.
  • Paralelismo: Stream soporta paralelismo eficiente mediante el método parallelStream().

Ejemplo:

// Collection: almacenamiento de datos iterables
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");

// Stream: procesamiento de datos de la colección
long count = names.stream() // creación de un stream desde la colección
                  .filter(name -> name.startsWith("A")) // operación intermedia
                  .count(); // operación terminal