Convertir Stream a Set en Java

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));
    }
}
Producción:

-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));
    }
}
Producción:

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));
    }
}
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *