Convertir lista a conjunto en Java

Java Set es parte del paquete java.util y amplía la interfaz java.util.Collection. No permite el uso de elementos duplicados y, como máximo, solo puede acomodar un elemento nulo. Algunas características importantes de la interfaz de Java Set son las siguientes:

  • La interfaz establecida es una colección desordenada de objetos en la que no se pueden almacenar valores duplicados.
  • Java Set no proporciona control sobre la posición de inserción o eliminación de elementos.
  • Básicamente, Set se implementa mediante HashSet, LinkedHashSet o TreeSet (representación ordenada).
  • Set tiene varios métodos para agregar, quitar claro, tamaño, etc. para mejorar el uso de esta interfaz.

En esta publicación, se analizan diferentes métodos para convertir una interfaz de lista a Set en Java :

Forma 1: enfoque ingenuo : la solución ingenua es crear un conjunto vacío y agregar todos los elementos de la lista especificada al conjunto recién creado. A continuación se muestra la implementación del enfoque ingenuo: 

Java

// Java Program to convert
// List to Set in Java 8
 
import java.util.*;
import java.util.stream.*;
import java.util.function.Function;
 
class GFG {
 
    // Generic function to convert list to set
    public static <T> Set<T> convertListToSet(List<T> list)
    {
        // create an empty set
        Set<T> set = new HashSet<>();
 
        // Add each element of list into the set
        for (T t : list)
            set.add(t);
 
        // return the set
        return set;
    }
 
    public static void main(String args[])
    {
 
        // Create a stream of integers
        List<String> list = Arrays.asList("GeeksForGeeks",
                                          "Geeks",
                                          "forGeeks",
                                          "A computer portal",
                                          "for",
                                          "Geeks");
 
        // Print the List
        System.out.println("List: " + list);
 
        // Convert List to stream
        Set<String> set = convertListToSet(list);
 
        // Print the Set
        System.out.println("Set from List: " + set);
    }
}

Producción:

List: [GeeksForGeeks, Geeks, forGeeks, A computer portal, for, Geeks]
Set from List: [Geeks, for, GeeksForGeeks, A computer portal, forGeeks]

Forma 2: Uso de Constructor : el constructor HashSet puede tomar otro objeto de colección para construir un nuevo conjunto que contenga los elementos de la lista especificada. A continuación se muestra la implementación del enfoque anterior: 

Java

// Java Program to convert
// List to Set in Java 8
 
import java.util.*;
import java.util.stream.*;
 
class GFG {
 
    // Generic function to convert list to set
    public static& lt;
    T& gt;
    Set& lt;
    T& gt;
    convertListToSet(List& lt; T & gt; list)
    {
        // create a set from the List
        return new HashSet& lt;
        >
        (list);
    }
 
    public static void main(String args[])
    {
 
        // Create a stream of integers
        List& lt;
        String& gt; list = Arrays.asList("GeeksForGeeks",
                                          "Geeks",
                                          "forGeeks",
                                          "A computer portal",
                                          "for",
                                          "Geeks");
 
        // Print the List
        System.out.println(" List : " + list);
 
        // Convert List to stream
        Set& lt;
        String& gt;
        set = convertListToSet(list);
 
        // Print the Set
        System.out.println(" Set from List
                           : "
                           + set);
    }
}

Producción:

List: [GeeksForGeeks, Geeks, forGeeks, A computer portal, for, Geeks]
Set from List: [Geeks, for, GeeksForGeeks, A computer portal, forGeeks]

Forma 3: Uso de la API de flujo de Java 8 : el constructor HashSet puede tomar otro objeto de colección para construir un nuevo conjunto que contenga los elementos de la lista especificada. A continuación se muestra la implementación del enfoque anterior: 

Java

// Java Program to convert
// List to Set in Java 8
 
import java.util.*;
import java.util.stream.*;
 
class GFG {
 
    // Generic function to convert list to set
    public static <T> Set<T> convertListToSet(List<T> list)
    {
        // create a set from the List
        return list.stream().collect(Collectors.toSet());
    }
 
    public static void main(String args[])
    {
 
        // Create a stream of integers
        List<String> list = Arrays.asList("GeeksForGeeks",
                                          "Geeks",
                                          "forGeeks",
                                          "A computer portal",
                                          "for",
                                          "Geeks");
 
        // Print the List
        System.out.println("List: " + list);
 
        // Convert List to stream
        Set<String> set = convertListToSet(list);
 
        // Print the Set
        System.out.println("Set from List: " + set);
    }
}

Producción:

List: [GeeksForGeeks, Geeks, forGeeks, A computer portal, for, Geeks]
Set from List: [Geeks, for, GeeksForGeeks, A computer portal, forGeeks]

Forma 4: usar Guava Sets.newHashSet() : Sets.newHashSet() crea una instancia mutable de HashSet que contiene los elementos de la lista especificada. A continuación se muestra la implementación del enfoque anterior: 

Java

// Java Program to convert
// List to Set in Java 8
 
import java.util.*;
import java.util.stream.*;
 
class GFG {
 
    // Generic function to convert list to set
    public static <T> Set<T> convertListToSet(List<T> list)
    {
        // create a set from the List
        return return Sets.newHashSet(list);
    }
 
    public static void main(String args[])
    {
 
        // Create a stream of integers
        List<String> list = Arrays.asList("GeeksForGeeks",
                                          "Geeks",
                                          "forGeeks",
                                          "A computer portal",
                                          "for",
                                          "Geeks");
 
        // Print the List
        System.out.println("List: " + list);
 
        // Convert List to stream
        Set<String> set = convertListToSet(list);
 
        // Print the Set
        System.out.println("Set from List: " + set);
    }
}

Producción:

List: [GeeksForGeeks, Geeks, forGeeks, A computer portal, for, Geeks]
Set from List: [Geeks, for, GeeksForGeeks, A computer portal, forGeeks]

Forma 5: Usar el método addAll() en el paquete Collection

En esto, podemos convertir los elementos de la lista para establecer mediante el método addAll(). Para ello, tenemos que importar el paquete java.util.Collection

Este método addAll(Collection c) es un tipo de datos booleano. Se utiliza para agregar la colección de un objeto a la colección de otro objeto. 

Java

import java.util.*;
import java.util.stream.*;
 
class GFG {
 
    // Generic function to convert list to set
    public static <T> Set<T> convertListToSet(List<T> list)
    {
        // create a set from the List using addAll() method
        HashSet<T> set = new HashSet<>();
        set.addAll(list);
        return set;
    }
 
    public static void main(String args[])
    {
 
        // Create a stream of integers
        List<String> list = Arrays.asList(
            "GeeksForGeeks", "Geeks", "forGeeks",
            "A computer portal", "for", "Geeks");
 
        // Print the List
        System.out.println("List: " + list);
 
        // Convert List to stream
        Set<String> set = convertListToSet(list);
 
        // Print the Set
        System.out.println("Set from List: " + set);
    }
}

Producción: 

List: [GeeksForGeeks, Geeks, forGeeks, A computer portal, for, Geeks]
Set from List: [Geeks, for, GeeksForGeeks, A computer portal, forGeeks]

Publicación traducida automáticamente

Artículo escrito por RishabhPrabhu 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 *