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
Collectiongeralmente alteram seu estado. Operações deStreamnão alteram a fonte de dados original. - Reutilização:
Collectionpode ser usada várias vezes.Streamgeralmente é de uso único após uma operação terminal. - Avaliação preguiçosa: Operações sobre
Streamsã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 emCollectionsão executadas imediatamente. - Paralelismo:
Streamsuporta paralelismo eficiente usando o métodoparallelStream().
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