Sobes.tech
Middle

Qual é o objetivo do uso de streams na nova versão do Java?

sobes.tech IA

Resposta da IA

Simplificação do trabalho com coleções de dados.

Objetivos principais:

  • Funcionalidade: Permitem usar expressões lambda e outras interfaces funcionais para o processamento declarativo de dados.
  • Paralelismo: Facilitam a paralelização de operações sobre coleções sem gestão explícita de threads.
  • Inmutabilidade: Os streams não modificam a coleção original. As operações nos streams criam novos streams ou resultados finais.
  • Desempenho: A avaliação preguiçosa (lazy evaluation) permite realizar operações apenas quando necessário.
  • Legibilidade: O código torna-se mais conciso e expressivo em comparação com os ciclos tradicionais.

Exemplo de uso:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class StreamExample {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "orange", "grape");

        // Filtragem e transformação usando streams
        List<String> filteredFruits = fruits.stream()
                                           .filter(s -> s.startsWith("a")) // Apenas os que começam com "a"
                                           .map(String::toUpperCase)     // Converter para maiúsculas
                                           .collect(Collectors.toList());   // Recolher numa nova lista

        System.out.println(filteredFruits); // Saída: [APPLE]
    }
}

Resumindo, os streams tornam o código mais moderno, eficiente e legível ao trabalhar com coleções de dados.