Java HashSet

I denne vejledning lærer vi om Java HashSet-klassen. Vi lærer om forskellige hash-sæt metoder og operationer ved hjælp af eksempler.

Den HashSetklasse af rammerne Java Samlinger indeholder funktionaliteter hash tabellen datastruktur.

Det implementerer Set-grænsefladen.

Oprettelse af et HashSet

For at oprette et hash-sæt skal vi først importere java.util.HashSetpakken.

Når vi først har importeret pakken, kan du oprette hash-sæt i Java her.

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

Her har vi oprettet et hash-sæt med navnet numbers.

Bemærk, den nye del HashSet(8, 0.75). Her er den første parameter kapacitet , og den anden parameter er loadFactor .

  • kapacitet - Kapaciteten for dette hash-sæt er 8. Det betyder, at det kan gemme 8 elementer.
  • loadFactor - Belastningsfaktoren for dette hash-sæt er 0,6. Dette betyder, at når vores hash-sæt er fyldt med 60%, flyttes elementerne til en ny hash-tabel, der er dobbelt så stor som den oprindelige hash-tabel.

Standardkapacitet og belastningsfaktor

Det er muligt at oprette en hash-tabel uden at definere dens kapacitet og belastningsfaktor. For eksempel,

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

Som standard,

  • hashsættets kapacitet er 16
  • belastningsfaktoren er 0,75

Metoder til HashSet

Den HashSetklasse giver forskellige metoder, der tillader os at udføre forskellige operationer på sættet.

Indsæt elementer til HashSet

  • add() - indsætter det angivne element i sættet
  • addAll() - indsætter alle elementerne i den angivne samling i sættet

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

Produktion

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

Adgang til HashSet-elementer

For at få adgang til elementerne i et hash-sæt kan vi bruge iterator()metoden. For at kunne bruge denne metode skal 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(", "); ) ) ) 

Produktion

 HashSet: (2, 5, 6) HashSet ved hjælp af Iterator: 2, 5, 6, 

Fjern elementer

  • remove() - fjerner det angivne element fra sættet
  • removeAll() - fjerner alle elementerne fra sættet

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

Produktion

HashSet: (2, 5, 6) Er 5 fjernet? sand Er alle elementer fjernet? sand

Indstil operationer

De forskellige metoder i HashSetklassen kan også bruges til at udføre forskellige sætoperationer.

Union af sæt

For at udføre foreningen mellem to sæt kan vi bruge 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); ) ) 

Produktion

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

Kryds af sæt

For at udføre krydset mellem to sæt kan vi bruge 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); ) ) 

Produktion

 HashSet1: (2, 3) HashSet2: (2, 4) Skæringspunktet er: (2) 

Forskel mellem sæt

For at beregne forskellen mellem de to sæt kan vi bruge 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); ) ) 

Produktion

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

Delmængde

For at kontrollere, om et sæt er et undersæt af et andet sæt eller ej, kan vi bruge 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); ) ) 

Produktion

HashSet1: (1, 2, 3, 4) HashSet2: (2, 3) Er HashSet2 en delmængde af HashSet1? sand

Andre metoder til HashSet

Metode Beskrivelse
clone() Opretter en kopi af HashSet
contains() Søger HashSetefter det angivne element og returnerer et boolsk resultat
isEmpty() Kontrollerer, om den HashSeter tom
size() Returnerer størrelsen på HashSet
clear() Fjerner alle elementerne fra HashSet

For at lære mere om HashSet-metoder, besøg Java HashSet (officiel Java-dokumentation).

Hvorfor HashSet?

I Java HashSetbruges det ofte, hvis vi er nødt til at få adgang til elementer tilfældigt. Det skyldes, at der er adgang til elementer i en hash-tabel ved hjælp af hash-koder.

Hashets kode for et element er en unik identitet, der hjælper med at identificere elementet i en hash-tabel.

HashSetkan ikke indeholde duplikatelementer. Derfor har hvert hash-element en unik hashcode.

Bemærk: HashSet er ikke synkroniseret. Det er, hvis flere tråde får adgang til hashsættet på samme tid, og en af ​​tråde ændrer hashsættet. Derefter skal den synkroniseres eksternt.

Interessante artikler...