Transformación de datos con Streams

Entrada/Salida y Streams en Java

Alex Liu

Software Development Engineer

Transformación de datos con streams

  • Transformación de datos con streams

    • Convierte formatos, agrega y filtra información
    • Guarda resultados en otro tipo de colección (p. ej., de List a Set)
    • Colecciones compatibles:
      • Listas (p. ej., ArrayList, LinkedList)
      • Sets (p. ej., HashSet, TreeSet)
      • Maps (Keys/Values como Streams) (p. ej., HashMap, TreeMap)
      • Arrays (vía 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 Stream para transformar elementos

  • Preparación: importa las clases necesarias Set, Collectors y Stream
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

// Convierte el `ArrayList` que creamos antes `names` a un `Stream` Stream<String> namesStream = names.stream();
  • Datos actuales: [Alice, Bob, Charlie, David]
Entrada/Salida y Streams en Java

Usar Stream para transformar elementos (continuación)

// Usa `.map()` para convertir cada elemento a mayúsculas
Stream<String> upperCaseNameStream = namesStream.map(
        name -> name.toUpperCase())
  • Datos actuales: [ALICE, BOB, CHARLIE, DAVID]
// Usa `.collect()` y `Collectors.toSet()` para guardar el stream transformado
upperCaseNameStream.collect(Collectors.toSet())
  • Datos finales:
    {CHARLIE, ALICE, BOB, DAVID}
    
Entrada/Salida y Streams en Java

Usar Stream para agregación

  • El método .reduce()

    • Agrega elementos en un único resultado
    • Útil para sumas, concatenaciones o buscar min/máx
  • Uso de .reduce(): recibe dos entradas

    • Valor inicial: punto de partida de la acumulación, p. ej., 0
    • Operador binario: función que toma dos argumentos
      • (x, y) -> x + y significa:
        • x es el total acumulado
        • y es el elemento actual
        • La operación suma y a x hasta procesar todos los elementos
Entrada/Salida y Streams en Java

Usar Stream para agregación: ejemplo

  • Convierte el ArrayList names en un objeto Stream.
    Stream<String> stream = names.stream();
    
  • Usa .map() para convertir cada nombre a su longitud y .reduce() para sumarlas
    stream
      .map(name -> name.length())
      .reduce(0, (sum, length) -> sum + length);
    
  • Resultado: 20
Entrada/Salida y Streams en Java

¡Vamos a practicar!

Entrada/Salida y Streams en Java

Preparing Video For Download...