A continuación se presentan algunos métodos que se pueden usar para convertir Stream a Set en Java.
Método 1: uso de recopiladores
El método Stream collect() toma elementos de un flujo y los almacena en una colección. collect(Collector.toSet()) recopila elementos de un flujo a un Conjunto.
El método Stream.collect() se puede utilizar para recopilar elementos de un flujo en un contenedor. El Collector que es devuelto por Collectors.toSet() puede pasarse para acumular los elementos de flujo en un nuevo Set.
// Java code for converting // Stream to Set using Collectors import java.util.*; import java.util.stream.Stream; import java.util.stream.Collectors; class GFG { // Driver code public static void main(String[] args) { // Creating a Stream of Integers Stream<Integer> stream = Stream.of(-2, -1, 0, 1, 2); // Using Stream.collect() to collect the // elements of stream in a container. Set<Integer> streamSet = stream.collect(Collectors.toSet()); // Displaying the elements streamSet.forEach(num -> System.out.println(num)); } }
-1 0 -2 1 2
Método 2: Convertir Stream a Array y luego a Set
El problema de convertir Stream en Set se puede dividir en dos partes:
1) Convert Stream to an Array 2) Convert Array to a Set
// Java code for converting // Stream to Set using Divide // and Conquer import java.util.*; import java.util.stream.Stream; import java.util.stream.Collectors; class GFG { // Driver code public static void main(String[] args) { // Creating a Stream of Strings Stream<String> stream = Stream.of("G", "E", "K", "S"); // Converting Stream into an Array String[] arr = stream.toArray(String[] :: new); // Creating a HashSet Set<String> set = new HashSet<>(); // Converting Array to set Collections.addAll(set,arr); // Displaying the elements set.forEach(str -> System.out.println(str)); } }
S E G K
Nota: la salida es aleatoria porque HashSet toma la entrada en orden aleatorio como valor hash generado.
Método 3: Usar forEach
Stream se puede convertir en Set usando forEach() . Recorra todos los elementos de la secuencia usando el método forEach() y luego use set.add() para agregar cada elemento en un conjunto vacío.
// Java code for converting // Stream to Set using forEach import java.util.*; import java.util.stream.Stream; import java.util.stream.Collectors; class GFG { // Driver code public static void main(String[] args) { // Creating a Stream of Integers Stream<Integer> stream = Stream.of(5, 10, 15, 20, 25); // Creating a HashSet Set<Integer> set = new HashSet<>(); // using set.add() to add elements // of stream into empty set stream.forEach(set::add); // Displaying the elements set.forEach(num -> System.out.println(num)); } }
20 5 25 10 15
Nota: si Stream es paralelo, es posible que los elementos no se procesen en el orden original utilizando el método forEach() . Para conservar el orden original, se utiliza el método forEachOrdered() .
Convertir un conjunto en flujo en Java
Publicación traducida automáticamente
Artículo escrito por Sahil_Bansall y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA