Header Ads Widget

Ticker

6/recent/ticker-posts

Clase Java HashSet

En este tutorial, aprenderemos sobre la clase Java HashSet. Aprenderemos sobre diferentes métodos y operaciones de hash set con la ayuda de ejemplos.
anuncios a través de carbonoOferta por tiempo limitado: obtenga 10 imágenes gratuitas de Adobe Stock.ANUNCIOS A TRAVÉS DE CARBONO
La HashSetclase del marco de Java Collections proporciona las funcionalidades de la estructura de datos de la tabla hash.
Implementa la interfaz Set .
La clase Java HashSet implementa la interfaz Set.

Crear un HashSet

Para crear un conjunto de hash, java.util.HashSetprimero debemos importar el paquete.
Una vez que importamos el paquete, así es como podemos crear conjuntos de hash en Java.
  1. // HashSet with 8 capacity and 0.75 load factor
  2. HashSet<Integer> numbers = new HashSet<>(8, 0.75);
Aquí, hemos creado un conjunto de hash llamado numbers.
Aviso, la parte nueva HashSet<>(8, 0.75)Aquí, el primer parámetro es la capacidad , y el segundo parámetro es loadFactor .
  • capacidad : la capacidad de este conjunto de hash es 8. Es decir, puede almacenar 8 elementos.
  • loadFactor : el factor de carga de este conjunto de hash es 0.6. Esto significa que cada vez que nuestro conjunto de hash se llena en un 60%, los elementos se mueven a una nueva tabla de hash del doble del tamaño de la tabla de hash original.
Capacidad predeterminada y factor de carga
Es posible crear una tabla hash sin definir su capacidad y factor de carga. Por ejemplo,
  1. // HashSet with default capacity and load factor
  2. HashSet<Integer> numbers1 = new HashSet<>();
Por defecto,
  • la capacidad del conjunto de hash será 16
  • el factor de carga será 0.75

Métodos de HashSet

La HashSetclase proporciona varios métodos que nos permiten realizar varias operaciones en el conjunto.

Insertar elementos en HashSet

  • add() - inserta el elemento especificado en el conjunto
  • addAll() - inserta todos los elementos de la colección especificada en el conjunto
Por ejemplo,
  1. import java.util.HashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. HashSet<Integer> evenNumber = new HashSet<>();
  5. // Using add() method
  6. evenNumber.add(2);
  7. evenNumber.add(4);
  8. evenNumber.add(6);
  9. System.out.println("HashSet: " + evenNumber);
  10. HashSet<Integer> numbers = new HashSet<>();
  11. // Using addAll() method
  12. numbers.addAll(evenNumber);
  13. numbers.add(5);
  14. System.out.println("New HashSet: " + numbers);
  15. }
  16. }
Salida
HashSet: [2, 4, 6]
Nuevo conjunto de hash: [2, 4, 5, 6]

Acceder a elementos HashSet

Para acceder a los elementos de un conjunto hash, podemos usar el iterator()método Para utilizar este método, debemos importar el java.util.Iteratorpaquete. Por ejemplo,
  1. import java.util.HashSet;
  2. import java.util.Iterator;
  3. class Main {
  4. public static void main(String[] args) {
  5. HashSet<Integer> numbers = new HashSet<>();
  6. numbers.add(2);
  7. numbers.add(5);
  8. numbers.add(6);
  9. System.out.println("HashSet: " + numbers);
  10. // Calling iterator() method
  11. Iterator<Integer> iterate = numbers.iterator();
  12. System.out.print("HashSet using Iterator: ");
  13. // Accessing elements
  14. while(iterate.hasNext()) {
  15. System.out.print(iterate.next());
  16. System.out.print(", ");
  17. }
  18. }
  19. }
Salida
HashSet: [2, 5, 6]
HashSet usando Iterator: 2, 5, 6,

Eliminar elementos

  • remove() - elimina el elemento especificado del conjunto
  • removeAll() - elimina todos los elementos del conjunto
Por ejemplo,
  1. import java.util.HashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. HashSet<Integer> numbers = new HashSet<>();
  5. numbers.add(2);
  6. numbers.add(5);
  7. numbers.add(6);
  8. System.out.println("HashSet: " + numbers);
  9. // Using remove() method
  10. boolean value1 = numbers.remove(5);
  11. System.out.println("Is 5 removed? " + value1);
  12. boolean value2 = numbers.removeAll(numbers);
  13. System.out.println("Are all elements removed? " + value2);
  14. }
  15. }
Salida
HashSet: [2, 5, 6]
¿Se han eliminado 5? Cierto
¿Se eliminan todos los elementos? Cierto

Establecer operaciones

Los diversos métodos de la HashSetclase también se pueden utilizar para realizar varias operaciones de conjuntos.

Unión de conjuntos

Dos realizan la unión entre dos conjuntos, podemos usar el addAll()método. Por ejemplo,
  1. import java.util.HashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. HashSet<Integer> evenNumbers = new HashSet<>();
  5. evenNumbers.add(2);
  6. evenNumbers.add(4);
  7. System.out.println("HashSet1: " + evenNumbers);
  8. HashSet<Integer> numbers = new HashSet<>();
  9. numbers.add(1);
  10. numbers.add(3);
  11. System.out.println("HashSet2: " + numbers);
  12. // Union of two set
  13. numbers.addAll(evenNumbers);
  14. System.out.println("Union is: " + numbers);
  15. }
  16. }
Salida
HashSet1: [2, 4]
HashSet2: [1, 3]
La unión es: [1, 2, 3, 4]

Intersección de conjuntos

Para realizar la intersección entre dos conjuntos, podemos usar el retainAll()método. Por ejemplo
  1. import java.util.HashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. HashSet<Integer> primeNumbers = new HashSet<>();
  5. primeNumbers.add(2);
  6. primeNumbers.add(3);
  7. System.out.println("HashSet1: " + primeNumbers);
  8. HashSet<Integer> evenNumbers = new HashSet<>();
  9. evenNumbers.add(2);
  10. evenNumbers.add(4);
  11. System.out.println("HashSet2: " + evenNumbers);
  12. // Intersection of two sets
  13. evenNumbers.retainAll(primeNumbers);
  14. System.out.println("Intersection is: " + evenNumbers);
  15. }
  16. }
Salida
HashSet1: [2, 3]
HashSet2: [2, 4]
La intersección es: [2]

Diferencia de conjuntos

Para calcular la diferencia entre los dos conjuntos, podemos usar el removeAll()método. Por ejemplo,
  1. import java.util.HashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. HashSet<Integer> primeNumbers = new HashSet<>();
  5. primeNumbers.add(2);
  6. primeNumbers.add(3);
  7. primeNumbers.add(5);
  8. System.out.println("HashSet1: " + primeNumbers);
  9. HashSet<Integer> oddNumbers = new HashSet<>();
  10. oddNumbers.add(1);
  11. oddNumbers.add(3);
  12. oddNumbers.add(5);
  13. System.out.println("HashSet2: " + oddNumbers);
  14. // Difference between HashSet1 and HashSet2
  15. primeNumbers.removeAll(oddNumbers);
  16. System.out.println("Difference : " + primeNumbers);
  17. }
  18. }
Salida
HashSet1: [2, 3, 5]
HashSet2: [1, 3, 5]
Diferencia: [2]

Subconjunto

Para verificar si un conjunto es un subconjunto de otro conjunto o no, podemos usar el containsAll()método. Por ejemplo,
  1. import java.util.HashSet;
  2. class Main {
  3. public static void main(String[] args) {
  4. HashSet<Integer> numbers = new HashSet<>();
  5. numbers.add(1);
  6. numbers.add(2);
  7. numbers.add(3);
  8. numbers.add(4);
  9. System.out.println("HashSet1: " + numbers);
  10. HashSet<Integer> primeNumbers = new HashSet<>();
  11. primeNumbers.add(2);
  12. primeNumbers.add(3);
  13. System.out.println("HashSet2: " + primeNumbers);
  14. // Check if primeNumbers is a subset of numbers
  15. boolean result = numbers.containsAll(primeNumbers);
  16. System.out.println("Is HashSet2 is subset of HashSet1? " + result);
  17. }
  18. }
Salida
HashSet1: [1, 2, 3, 4]
HashSet2: [2, 3]
¿HashSet2 es un subconjunto de HashSet1? Cierto

Otros métodos de HashSet

MétodoDescripción
clone()Crea una copia de HashSet
contains()Busca el HashSetelemento especificado y devuelve un resultado booleano.
isEmpty()Comprueba si HashSetestá vacío
size()Devuelve el tamaño de HashSet
clear()Elimina todos los elementos del HashSet
Para obtener más información sobre los métodos HashSet, visite Java HashSet .

¿Por qué HashSet?

En Java, HashSetse usa comúnmente si tenemos que acceder a elementos al azar. Esto se debe a que se accede a los elementos de una tabla hash utilizando códigos hash.
El código hash de un elemento es una identidad única que ayuda a identificar el elemento en una tabla hash.
HashSetno puede contener elementos duplicados. Por lo tanto, cada elemento de conjunto hash tiene un código hash único.
Nota: HashSet no está sincronizado. Es decir, si varios subprocesos acceden al conjunto de hash al mismo tiempo y uno de los subprocesos modifica el conjunto de hash. Entonces debe estar sincronizado externamente.

Publicar un comentario

0 Comentarios