Sobes.tech
Middle

Qual é a diferença entre Collection e Stream em Java?

sobes.tech IA

Resposta da IA

Collection — é uma estrutura de dados para armazenar elementos, representando um grupo de objetos, como listas, conjuntos. É um armazenamento de dados focado na gestão de elementos.

Stream — é uma sequência de elementos de uma fonte (por exemplo, uma coleção), que suporta operações para processar e analisar esses elementos em estilo funcional. Não armazena dados, apenas representa um fluxo de dados para realizar operações.

Principais diferenças:

  • Propósito: Collection - armazenamento de dados, Stream - processamento de dados.
  • Alteração de estado: Operações sobre Collection geralmente alteram seu estado. Operações de Stream não alteram a fonte de dados original.
  • Reutilização: Collection pode ser usada várias vezes. Stream geralmente é de uso único após uma operação terminal.
  • Avaliação preguiçosa: Operações sobre Stream são executadas de forma "preguiçosa" (apenas ao chamar uma operação terminal), o que pode ser eficiente para grandes conjuntos de dados. Operações em Collection são executadas imediatamente.
  • Paralelismo: Stream suporta paralelismo eficiente usando o método parallelStream().

Exemplo:

// Collection: armazenamento de dados iteráveis
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");

// Stream: processamento de dados da coleção
long count = names.stream() // criação de um stream a partir da coleção
                  .filter(name -> name.startsWith("A")) // operação intermediária
                  .count(); // operação terminal