Introdução a Streams

Entrada/Saída e Streams em Java

Alex Liu

Software Development Engineer

Trabalhando com Streams

  • Streams{{1}} em Java

    • Processam coleções de dados de forma funcional e melhoram a performance com grandes volumes
    • Coleções com suporte:
      • Lists (ex.: ArrayList, LinkedList)
      • Sets (ex.: HashSet, TreeSet)
      • Maps (Keys/Values como Streams) (ex.: HashMap, TreeMap)
      • Arrays (via Arrays.stream())
  • ArrayList de exemplo chamado names para usar no resto do vídeo

    names: ["Alice", "Bob", "Charlie", "David"]
    
Entrada/Saída e Streams em Java

Usando expressões lambda com Stream

  • Expressões lambda
    • Sintaxe: (parameters) -> { expression }
names.forEach(
    // `name` é um parâmetro que representa cada elemento da lista
    name -> 
        // Esta é a expressão executada para cada elemento.
        System.out.println(name));
Alice 
Bob 
Charlie 
David
Entrada/Saída e Streams em Java

Criando um Stream

  • Converter coleção de dados em Stream

    • Use .stream() na coleção
    • Suporta List, Set e Queue
  • Importar a classe Stream

    import java.util.stream.Stream;
    
  • Converter a lista names em stream e usar .foreach() para acessar cada elemento
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Entrada/Saída e Streams em Java

Filtrando dados com Streams

  • Use .filter() para selecionar elementos
    • Mantém apenas os elementos correspondentes
  • Converter a lista names em stream
    Stream<String> stream = names.stream();
    
  • Usar .filter() para itens que começam com A e .forEach() para imprimi-los
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Resultado do filtro: Alice
Entrada/Saída e Streams em Java

Contando elementos com Streams

  • Use .count() para contar elementos

    • Retorna um valor long
  • Converter a lista names em stream

    Stream<String> stream = names.stream();
    
  • Usar .filter() para itens que começam com B e .count() para contá-los

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Resultado da contagem: 1 (apenas Bob começa com B)

Entrada/Saída e Streams em Java

Quando usar Streams

  • Quando usar Streams:
    • Para grandes conjuntos de dados: reduz sobrecarga de performance
    • Para operações funcionais: mais legível que laços
    • Para filtro e transformações: simplifica o código
  • Quando NÃO usar Streams:
    • Para modificar coleções originais
    • Para laços simples com efeitos colaterais
Entrada/Saída e Streams em Java

Vamos praticar!

Entrada/Saída e Streams em Java

Preparing Video For Download...