Java HashSet

I denne opplæringen vil vi lære om Java HashSet-klassen. Vi lærer om forskjellige hashsettmetoder og operasjoner ved hjelp av eksempler.

Den HashSetklasse av Java-samlinger rammeverket gir funksjonaliteten av nummertabellen datastrukturen.

Den implementerer Set-grensesnittet.

Opprette et HashSet

For å lage et hash-sett, må vi først importere java.util.HashSetpakken.

Når vi har importert pakken, kan du lage hash-sett i Java.

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

Her har vi laget et hash-sett med navnet numbers.

Legg merke til, delen er ny HashSet(8, 0.75). Her er den første parameteren kapasitet , og den andre parameteren er loadFactor .

  • kapasitet - Kapasiteten til dette hash-settet er 8. Det betyr at det kan lagre 8 elementer.
  • loadFactor - Lastfaktoren for dette hash-settet er 0,6. Dette betyr at når hash-settet vårt fylles med 60%, flyttes elementene til en ny hash-tabell med dobbel størrelse på den opprinnelige hash-tabellen.

Standard kapasitet og lastfaktor

Det er mulig å lage en hash-tabell uten å definere kapasitet og lastfaktor. For eksempel,

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

Som standard

  • kapasiteten til hash-settet vil være 16
  • lastfaktoren vil være 0,75

Metoder for HashSet

Den HashSetklassen gir ulike metoder som tillater oss å utføre ulike operasjoner på settet.

Sett inn elementer i HashSet

  • add() - setter inn det angitte elementet i settet
  • addAll() - setter inn alle elementene i den spesifiserte samlingen i settet

For eksempel,

 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); ) ) 

Produksjon

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

Få tilgang til HashSet Elements

For å få tilgang til elementene i et hash-sett, kan vi bruke iterator()metoden. For å kunne bruke denne metoden, må vi importere java.util.Iteratorpakken. For eksempel,

 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(", "); ) ) ) 

Produksjon

 HashSet: (2, 5, 6) HashSet ved hjelp av Iterator: 2, 5, 6, 

Fjern elementer

  • remove() - fjerner det angitte elementet fra settet
  • removeAll() - fjerner alle elementene fra settet

For eksempel,

 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); ) ) 

Produksjon

HashSet: (2, 5, 6) Er 5 fjernet? true Er alle elementene fjernet? ekte

Sett operasjoner

De forskjellige metodene i HashSetklassen kan også brukes til å utføre forskjellige settoperasjoner.

Union of Sets

For å utføre foreningen mellom to sett, kan vi bruke addAll()metoden. For eksempel,

 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); ) ) 

Produksjon

 HashSet1: (2, 4) HashSet2: (1, 3) Union er: (1, 2, 3, 4) 

Kryss av sett

For å utføre skjæringspunktet mellom to sett, kan vi bruke retainAll()metoden. For eksempel

 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); ) ) 

Produksjon

 HashSet1: (2, 3) HashSet2: (2, 4) Krysset er: (2) 

Forskjell mellom sett

For å beregne forskjellen mellom de to settene, kan vi bruke removeAll()metoden. For eksempel,

 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); ) ) 

Produksjon

 HashSet1: (2, 3, 5) HashSet2: (1, 3, 5) Forskjell: (2) 

Delsett

For å sjekke om et sett er et delsett av et annet sett eller ikke, kan vi bruke containsAll()metoden. For eksempel,

 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); ) ) 

Produksjon

HashSet1: (1, 2, 3, 4) HashSet2: (2, 3) Er HashSet2 en delmengde av HashSet1? ekte

Andre metoder for HashSet

Metode Beskrivelse
clone() Lager en kopi av HashSet
contains() Søker HashSetetter det angitte elementet og returnerer et boolsk resultat
isEmpty() Sjekker om det HashSeter tomt
size() Returnerer størrelsen på HashSet
clear() Fjerner alle elementene fra HashSet

For å lære mer om HashSet-metoder, besøk Java HashSet (offisiell Java-dokumentasjon).

Hvorfor HashSet?

I Java HashSetbrukes det ofte hvis vi må få tilgang til elementer tilfeldig. Det er fordi du får tilgang til elementer i en hashtabell ved hjelp av hash-koder.

Hashkoden til et element er en unik identitet som hjelper til med å identifisere elementet i en hash-tabell.

HashSetkan ikke inneholde dupliserte elementer. Derfor har hvert hasksettelement en unik hashkode.

Merk: HashSet er ikke synkronisert. Det er hvis flere tråder får tilgang til hash-settet samtidig, og en av trådene endrer hash-settet. Da må den synkroniseres eksternt.

Interessante artikler...