În acest tutorial, vom afla despre clasa Java HashSet. Vom afla despre diferite metode și operații de seturi de hash cu ajutorul exemplelor.
HashSet
Clasa 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
HashSet
Clasa 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 setaddAll()
- 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.Iterator
pachetul. 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 specificatremoveAll()
- 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 HashSet
clasei 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ă HashSet elementul specificat și returnează un rezultat boolean |
isEmpty() | Verifică dacă HashSet este 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, HashSet
este 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.
HashSet
nu 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.