Sobes.tech
Junior

Para que são usados os streams em Java?

sobes.tech IA

Resposta da IA

Para o processamento declarativo de coleções de dados. Permitem realizar operações sequenciais ou paralelas sobre os elementos das coleções, como filtragem, mapeamento (transformação), agregação e recolha de resultados, tornando o código mais legível e flexível.

Vantagens principais:

  • Declarativo: Em vez de descrever "como" realizar a operação (laços, iteradores), descrevemos "o que" fazer com os dados.
  • Paralelismo: É fácil alternar entre processamento sequencial e paralelo, o que é útil para sistemas multinúcleo.
  • Lazy: As operações intermédias são executadas apenas quando necessário, na presença de uma operação terminal.
  • Conciso: Frequentemente permite reduzir a quantidade de código em comparação com os ciclos tradicionais.

Exemplo de processamento sequencial:

// Obter uma lista de nomes de utilizadores com mais de 18 anos e convertê-los para maiúsculas
List<User> users = ... // A sua coleção de utilizadores
List<String> adultUserNames = users.stream()
    .filter(user -> user.getAge() >= 18) // Filtrar utilizadores por idade
    .map(user -> user.getName().toUpperCase()) // Converter o nome para maiúsculas
    .collect(Collectors.toList()); // Recolher resultados numa lista

Exemplo de processamento paralelo:

// Soma paralela de números grandes numa lista
List<Long> numbers = ... // A sua coleção de números
long sum = numbers.parallelStream()
    .reduce(0L, Long::sum); // Soma paralela

Assim, os streams em Java são utilizados para uma abordagem funcional e eficiente no processamento de dados.