Introducción a Streams

Entrada/Salida y Streams en Java

Alex Liu

Software Development Engineer

Trabajar con Streams

  • Streams de Java

    • Procesa colecciones de datos de forma funcional y mejora el rendimiento con grandes volúmenes
    • Colecciones compatibles:
      • Listas (p. ej., ArrayList, LinkedList)
      • Conjuntos (p. ej., HashSet, TreeSet)
      • Mapas (Keys/Values como Streams) (p. ej., HashMap, TreeMap)
      • Arrays (con Arrays.stream())
  • ArrayList de ejemplo llamado names para el resto del vídeo

    names: ["Alice", "Bob", "Charlie", "David"]
    
Entrada/Salida y Streams en Java

Usar expresiones lambda con Stream

  • Expresiones lambda
    • Sintaxis: (parameters) -> { expression }
names.forEach(
    // `name` es un parámetro que representa cada elemento de la lista
    name -> 
        // Esta es la expresión que se ejecuta para cada elemento.
        System.out.println(name));
Alice 
Bob 
Charlie 
David
Entrada/Salida y Streams en Java

Crear un Stream

  • Convertir una colección de datos a Stream

    • Usa .stream() en una colección
    • Compatible con List, Set y Queue
  • Importar la clase Stream

    import java.util.stream.Stream;
    
  • Convertir la lista de ejemplo names a stream y usar .foreach() para acceder a cada elemento
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Entrada/Salida y Streams en Java

Filtrar datos con Streams

  • Usa .filter() para seleccionar elementos
    • Mantiene solo los elementos que coinciden
  • Convertir la lista de ejemplo names a stream
    Stream<String> stream = names.stream();
    
  • Usa .filter() para los que empiezan por A y .forEach() para imprimirlos
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Resultado del filtrado: Alice
Entrada/Salida y Streams en Java

Contar elementos con Streams

  • Usa .count() para contar elementos

    • Devuelve un valor long
  • Convertir la lista de ejemplo names a stream

    Stream<String> stream = names.stream();
    
  • Usa .filter() para los que empiezan por B y .count() para contarlos

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Resultado del conteo: 1 (solo 1 elemento, Bob, empieza por B)

Entrada/Salida y Streams en Java

Cuándo usar Streams

  • Cuándo usar Streams:
    • Con grandes conjuntos de datos: reduce la sobrecarga de rendimiento
    • Para operaciones funcionales: más legible que los bucles
    • Para filtrado y transformaciones: simplifica el código
  • Cuándo NO usar Streams:
    • Para modificar colecciones originales
    • Para bucles simples con efectos secundarios
Entrada/Salida y Streams en Java

¡Vamos a practicar!

Entrada/Salida y Streams en Java

Preparing Video For Download...