Buscar..


Declarando un HashSet con valores

Puedes crear una nueva clase que hereda de HashSet:

Set<String> h = new HashSet<String>() {{
    add("a");
    add("b");
}};

Una solución de línea:

Set<String> h = new HashSet<String>(Arrays.asList("a", "b"));

Utilizando guayaba:

Sets.newHashSet("a", "b", "c")

Utilizando Streams:

Set<String> set3 = Stream.of("a", "b", "c").collect(toSet());

Tipos y uso de conjuntos

Generalmente, los conjuntos son un tipo de colección que almacena valores únicos. La unicidad está determinada por los métodos equals() y hashCode() .

La clasificación está determinada por el tipo de conjunto.

HashSet - Clasificación aleatoria

Java SE 7
Set<String> set = new HashSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Strawberry", "Banana", "Apple"]

LinkedHashSet - Orden de inserción

Java SE 7
Set<String> set = new LinkedHashSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Banana", "Apple", "Strawberry"]

TreeSet - por compareTo() o Comparator

Java SE 7
Set<String> set = new TreeSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Apple", "Banana", "Strawberry"]
Java SE 7
Set<String> set = new TreeSet<> ((string1, string2) -> string2.compareTo(string1));
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Strawberry", "Banana", "Apple"]

Inicialización

Un conjunto es una colección que no puede contener elementos duplicados. Modela la abstracción del conjunto matemático.

Set tiene su implementación en varias clases como HashSet , TreeSet , LinkedHashSet .

Por ejemplo:

HashSet:

Set<T> set = new HashSet<T>();

Aquí T puede ser String , Integer o cualquier otro objeto . HashSet permite una búsqueda rápida de O (1) pero no ordena los datos agregados y pierde el orden de inserción de los elementos.

TreeSet:

Almacena los datos de forma ordenada, sacrificando cierta velocidad para las operaciones básicas que toman O (lg (n)). No mantiene el orden de inserción de los artículos.

TreeSet<T> sortedSet = new TreeSet<T>();

LinkedHashSet:

Es una implementación de lista enlazada de HashSet Una vez puede iterar sobre los elementos en el orden en que se agregaron. La clasificación no está prevista para su contenido. O (1) se proporcionan operaciones básicas, sin embargo, hay un costo más alto que HashSet para mantener la lista de vínculos de respaldo.

LinkedHashSet<T> linkedhashset = new LinkedHashSet<T>();

Fundamentos de set

¿Qué es un conjunto?

Un conjunto es una estructura de datos que contiene un conjunto de elementos con una propiedad importante que no hay dos elementos iguales en el conjunto.

Tipos de juego:

  1. HashSet: un conjunto respaldado por una tabla hash (en realidad una instancia de HashMap)
  2. HashSet vinculado: un conjunto respaldado por una tabla de hash y una lista enlazada, con un orden de iteración predecible
  3. TreeSet: Una implementación de NavigableSet basada en un TreeMap.

Creando un conjunto

Set<Integer> set = new HashSet<Integer>(); // Creates an empty Set of Integers

Set<Integer> linkedHashSet = new LinkedHashSet<Integer>(); //Creates a empty Set of Integers, with predictable iteration order

Añadiendo elementos a un conjunto

Los elementos se pueden agregar a un conjunto usando el método add()

 set.add(12); //  - Adds element 12 to the set
 set.add(13); //  - Adds element 13 to the set

Nuestro set después de ejecutar este método:

set = [12,13]

Eliminar todos los elementos de un conjunto.

set.clear();  //Removes all objects from the collection.

Después de este conjunto será:

set = []

Compruebe si un elemento es parte del conjunto

La existencia de un elemento en el conjunto se puede verificar usando el método de contains()

set.contains(0);  //Returns true if a specified object is an element within the set.

Salida: False

Compruebe si un conjunto está vacío

isEmpty() método isEmpty() se puede usar para verificar si un conjunto está vacío.

set.isEmpty();  //Returns true if the set has no elements

Salida: Verdadero

Eliminar un elemento del conjunto.

 set.remove(0); // Removes first occurrence of a specified object from the collection

Compruebe el tamaño del conjunto

set.size(); //Returns the number of elements in the collection

Salida: 0

Crear una lista de un conjunto existente

Usando una nueva lista

List<String> list = new ArrayList<String>(listOfElements);

Usando el método List.addAll ()

    Set<String> set = new HashSet<String>();
    set.add("foo");
    set.add("boo");
    
    List<String> list = new ArrayList<String>();
    list.addAll(set);

Usando Java 8 Steam API

List<String> list = set.stream().collect(Collectors.toList());

Eliminando duplicados utilizando Set

Supongamos que tiene elements una colección y desea crear otra colección que contenga los mismos elementos pero con todos los duplicados eliminados :

Collection<Type> noDuplicates = new HashSet<Type>(elements);

Ejemplo :

List<String> names = new ArrayList<>(
        Arrays.asList("John", "Marco", "Jenny", "Emily", "Jenny", "Emily", "John"));
Set<String> noDuplicates = new HashSet<>(names);
System.out.println("noDuplicates = " + noDuplicates);

Salida :

noDuplicates = [Marco, Emily, John, Jenny]


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow