Java - Stream
Concepto
Es una
secuencia de datos
que se puedeleer
oescribir
de forma secuencial
-
La
API
destreams
ofrecemétodos
yopciones
para realizaroperaciones complejas
ypersonalizadas
-
Característica de la
plataforma Java
implementada desde laversion 1.8
de Java en2014
-
Un
stream
se puede usar para realizar una variedad de tareas-
convertir
el formato de los datos -
realizar
cálculos mientras se leen -
escriben
los datos -
filtrar
datos
-
-
Es una
secuencia de elementos
que se pueden procesar deforma secuencial
oen paralelo
-
Un
stream
no almacena loselementos
sino que aplica lasoperaciones
sobre los elementos de lafuente de datos
-
Una
colección
-
Un
array
-
Un
generador de números
-
Los
streams
se utilizan para trabajar con-
Datos de entrada
como cuandose lee
informacióndesde
un archivo -
Datos de salida
como cuandoescribe
informaciónhacia
un archivo -
Envía
información a través de la red
-
Ejemplo
- Operaciones que se pueden realizar con
streams
en Java
-
Filtrar
elementos de unacolección
- Se puede obtener un
stream
con los elementos mayores a 10 de unalista de números
utilizando elmétodo filter
delstream
- 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());
-
Transformar
elementos- Se puede obtener un
stream
con los nombres de los usuarios de una lista deobjetos Usuario
utilizando elmétodo map()
delstream
- Se puede obtener un
List<Usuario> usuarios = ...;
List<String> nombres = usuarios.stream()
.map(u -> u.getNombre())
.collect(Collectors.toList());
-
Reducir
elementos a un valor único- Se puede obtener el número total de elementos de un
stream
utilizando 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();
Realizar
operaciones en paralelo
- Puede mejorar el rendimiento en
sistemas
convarios núcleos
deprocesamiento
Ejemplo de Calculo
- Se puede utilizar el
método parallelStream()
en lugar destream
para realizar las operaciones en unstream
de manera concurrente envarios hilos
de 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úmeros
y deseacalcular
lasuma
de todos los números en el archivo- Usar un
stream
paraleer
los datos delarchivo secuencialmente
y realizar elcálculo
de lasuma
mientras recorre los datos
- Usar un
-
Utiliza un
stream
paraleer
losdatos
del archivonumbers.txt
línea a línea -
Convertir
cada línea en un número -
Se utiliza el
método mapToInt()
paraconvertir
elstream
deString
a unstream
de númerosint
-
Utiliza el
método sum()
para calcular la suma de todos losnúmeros
en 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