Java - Stream
Concepto
Es una
secuencia de datosque se puedeleeroescribirde forma secuencial
-
La
APIdestreamsofrecemétodosyopcionespara realizaroperaciones complejasypersonalizadas -
Característica de la
plataforma Javaimplementada desde laversion 1.8de Java en2014 -
Un
streamse puede usar para realizar una variedad de tareas-
convertirel formato de los datos -
realizarcálculos mientras se leen -
escribenlos datos -
filtrardatos
-
-
Es una
secuencia de elementosque se pueden procesar deforma secuencialoen paralelo -
Un
streamno almacena loselementossino que aplica lasoperacionessobre los elementos de lafuente de datos -
Una
colección -
Un
array -
Un
generador de números -
Los
streamsse utilizan para trabajar con-
Datos de entradacomo cuandose leeinformacióndesdeun archivo -
Datos de salidacomo cuandoescribeinformaciónhaciaun archivo -
Envíainformación a través de la red
-
Ejemplo
- Operaciones que se pueden realizar con
streamsen Java
-
Filtrarelementos de unacolección- Se puede obtener un
streamcon los elementos mayores a 10 de unalista de númerosutilizando elmétodo filterdelstream
- Se puede obtener un
List<Integer> numeros = Arrays.asList(1, 5, 10, 15, 20);
List<Integer> mayoresA10 = numeros.stream()
.filter(n -> n > 10)
.collect(Collectors.toList());
-
Transformarelementos- Se puede obtener un
streamcon los nombres de los usuarios de una lista deobjetos Usuarioutilizando elmétodo map()delstream
- Se puede obtener un
List<Usuario> usuarios = ...;
List<String> nombres = usuarios.stream()
.map(u -> u.getNombre())
.collect(Collectors.toList());
-
Reducirelementos a un valor único- Se puede obtener el número total de elementos de un
streamutilizando elmétodo count()delstream
- Se puede obtener el número total de elementos de un
List<Integer> numeros = Arrays.asList(1, 5, 10, 15, 20);
long cantidad = numeros.stream().count();
Realizaroperaciones en paralelo
- Puede mejorar el rendimiento en
sistemasconvarios núcleosdeprocesamiento
Ejemplo de Calculo
- Se puede utilizar el
método parallelStream()en lugar destreampara realizar las operaciones en unstreamde manera concurrente envarios hilosde ejecución
List<Integer> numeros = Arrays.asList(1, 5, 10, 15, 20);
List<Integer> mayoresA10 = numeros.parallelStream()
.filter(n -> n > 10)
.collect(Collectors.toList());
Ejemplo de Lectura de Datos
-
Archivo contiene una
lista de númerosy deseacalcularlasumade todos los números en el archivo- Usar un
streamparaleerlos datos delarchivo secuencialmentey realizar elcálculode lasumamientras recorre los datos
- Usar un
-
Utiliza un
streamparaleerlosdatosdel archivonumbers.txtlínea a línea -
Convertircada línea en un número -
Se utiliza el
método mapToInt()paraconvertirelstreamdeStringa unstreamde númerosint -
Utiliza el
método sum()para calcular la suma de todos losnúmerosen elstream
// Crear un stream que lea los datos del archivo
Stream<String> stream = Files.lines(Paths.get("numbers.txt"));
// Convertir el stream de String a un stream de números y calcular la suma de todos los números
int sum = stream.mapToInt(Integer::parseInt)
.sum();
// Imprimir la suma
System.out.println("Suma: " + sum);
Deja un comentario