Java HashSet

În acest tutorial, vom afla despre clasa Java HashSet. Vom afla despre diferite metode și operații de seturi de hash cu ajutorul exemplelor.

HashSetClasa cadrului Java Colecții oferă funcționalitățile structurii de date tabel hash.

Implementează interfața Set.

Crearea unui HashSet

Pentru a crea un set de hash, trebuie mai java.util.HashSetîntâi să importăm pachetul.

Odată ce am importat pachetul, iată cum putem crea seturi de hash în Java.

 // HashSet with 8 capacity and 0.75 load factor HashSet numbers = new HashSet(8, 0.75); 

Aici, am creat un set de hash numit numbers.

Observați, partea nouă HashSet(8, 0.75). Aici, primul parametru este capacitatea , iar al doilea parametru este loadFactor .

  • capacitate - Capacitatea acestui set hash este 8. Adică, poate stoca 8 elemente.
  • loadFactor - Factorul de încărcare al acestui set de hash este 0,6. Aceasta înseamnă că, ori de câte ori setul nostru de hash este umplut cu 60%, elementele sunt mutate într-un nou tabel hash de dublu față de dimensiunea tabelului hash original.

Capacitatea implicită și factorul de încărcare

Este posibil să creați un tabel hash fără a-i defini capacitatea și factorul de încărcare. De exemplu,

 // HashSet with default capacity and load factor HashSet numbers1 = new HashSet(); 

În mod implicit,

  • capacitatea setului de hash va fi de 16
  • factorul de încărcare va fi 0,75

Metode de HashSet

HashSetClasa oferă diverse metode care ne permit de a efectua diverse operații pe platoul de filmare.

Inserați elemente în HashSet

  • add() - inserează elementul specificat în set
  • addAll() - introduce în set toate elementele colecției specificate

De exemplu,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet evenNumber = new HashSet(); // Using add() method evenNumber.add(2); evenNumber.add(4); evenNumber.add(6); System.out.println("HashSet: " + evenNumber); HashSet numbers = new HashSet(); // Using addAll() method numbers.addAll(evenNumber); numbers.add(5); System.out.println("New HashSet: " + numbers); ) ) 

Ieșire

 HashSet: (2, 4, 6) HashSet nou: (2, 4, 5, 6) 

Accesați elementele HashSet

Pentru a accesa elementele unui set hash, putem folosi iterator()metoda. Pentru a utiliza această metodă, trebuie să importăm java.util.Iteratorpachetul. De exemplu,

 import java.util.HashSet; import java.util.Iterator; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: " + numbers); // Calling iterator() method Iterator iterate = numbers.iterator(); System.out.print("HashSet using Iterator: "); // Accessing elements while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) ) 

Ieșire

 HashSet: (2, 5, 6) HashSet folosind Iterator: 2, 5, 6, 

Eliminați elementele

  • remove() - elimină din set elementul specificat
  • removeAll() - elimină toate elementele din set

De exemplu,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: " + numbers); // Using remove() method boolean value1 = numbers.remove(5); System.out.println("Is 5 removed? " + value1); boolean value2 = numbers.removeAll(numbers); System.out.println("Are all elements removed? " + value2); ) ) 

Ieșire

HashSet: (2, 5, 6) 5 este eliminat? adevărat Sunt eliminate toate elementele? Adevărat

Operații de setare

Diferitele metode ale HashSetclasei pot fi, de asemenea, utilizate pentru a efectua diverse operații de setare.

Uniunea seturilor

Pentru a efectua unirea dintre două seturi, putem folosi addAll()metoda. De exemplu,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet evenNumbers = new HashSet(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("HashSet1: " + evenNumbers); HashSet numbers = new HashSet(); numbers.add(1); numbers.add(3); System.out.println("HashSet2: " + numbers); // Union of two set numbers.addAll(evenNumbers); System.out.println("Union is: " + numbers); ) ) 

Ieșire

 HashSet1: (2, 4) HashSet2: (1, 3) Uniunea este: (1, 2, 3, 4) 

Intersecția seturilor

Pentru a efectua intersecția dintre două seturi, putem folosi retainAll()metoda. De exemplu

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet1: " + primeNumbers); HashSet evenNumbers = new HashSet(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("HashSet2: " + evenNumbers); // Intersection of two sets evenNumbers.retainAll(primeNumbers); System.out.println("Intersection is: " + evenNumbers); ) ) 

Ieșire

 HashSet1: (2, 3) HashSet2: (2, 4) Intersecția este: (2) 

Diferența seturilor

Pentru a calcula diferența dintre cele două seturi, putem folosi removeAll()metoda. De exemplu,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); primeNumbers.add(5); System.out.println("HashSet1: " + primeNumbers); HashSet oddNumbers = new HashSet(); oddNumbers.add(1); oddNumbers.add(3); oddNumbers.add(5); System.out.println("HashSet2: " + oddNumbers); // Difference between HashSet1 and HashSet2 primeNumbers.removeAll(oddNumbers); System.out.println("Difference : " + primeNumbers); ) ) 

Ieșire

 HashSet1: (2, 3, 5) HashSet2: (1, 3, 5) Diferență: (2) 

Subset

Pentru a verifica dacă un set este sau nu un subset al altui set, putem folosi containsAll()metoda. De exemplu,

 import java.util.HashSet; class Main ( public static void main(String() args) ( HashSet numbers = new HashSet(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); System.out.println("HashSet1: " + numbers); HashSet primeNumbers = new HashSet(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet2: " + primeNumbers); // Check if primeNumbers is a subset of numbers boolean result = numbers.containsAll(primeNumbers); System.out.println("Is HashSet2 is subset of HashSet1? " + result); ) ) 

Ieșire

HashSet1: (1, 2, 3, 4) HashSet2: (2, 3) HashSet2 este un subset al HashSet1? Adevărat

Alte metode de HashSet

Metodă Descriere
clone() Creează o copie a fișierului HashSet
contains() Caută HashSetelementul specificat și returnează un rezultat boolean
isEmpty() Verifică dacă HashSeteste gol
size() Returnează dimensiunea fișierului HashSet
clear() Elimină toate elementele din HashSet

Pentru a afla mai multe despre metodele HashSet, vizitați Java HashSet (documentație oficială Java).

De ce HashSet?

În Java, HashSeteste utilizat în mod obișnuit dacă trebuie să accesăm elemente aleatoriu. Acest lucru se datorează faptului că elementele dintr-un tabel hash sunt accesate folosind coduri hash.

Codul hash al unui element este o identitate unică care ajută la identificarea elementului dintr-un tabel hash.

HashSetnu poate conține elemente duplicat. Prin urmare, fiecare element de set hash are un cod hash unic.

Notă: HashSet nu este sincronizat. Asta dacă mai multe fire de acces accesează setul de hash în același timp și unul dintre fire modifică setul de hash. Apoi trebuie sincronizat extern.

Articole interesante...