Java Language
Conjuntos
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
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
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
Set<String> set = new TreeSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");
// Set Elements: ["Apple", "Banana", "Strawberry"]
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:
- HashSet: un conjunto respaldado por una tabla hash (en realidad una instancia de HashMap)
- HashSet vinculado: un conjunto respaldado por una tabla de hash y una lista enlazada, con un orden de iteración predecible
- 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]