Java HashSet

Selles õpetuses õpime tundma Java HashSeti klassi. Näidete abil õpime tundma erinevaid räsikomplekti meetodeid ja toiminguid.

HashSetKlassi Java Collections raames annab funktsioonid hash tabeli andmed struktuuri.

See rakendab liidest Set.

HashSeti loomine

Räsikomplekti loomiseks peame java.util.HashSetesmalt paketi importima .

Kui pakett on imporditud, saate Java-s räsikomplekte luua järgmiselt.

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

Siin oleme loonud räsikomplekti nimega numbers.

Pange tähele, et osa on uus HashSet(8, 0.75). Siin on esimene parameeter mahtuvus ja teine ​​parameeter loadFactor .

  • maht - selle räsikomplekti maht on 8. See tähendab, et see võib salvestada 8 elementi.
  • loadFactor - selle räsikomplekti koormustegur on 0,6. See tähendab, et alati, kui meie räsikomplekt täidetakse 60%, viiakse elemendid uude räsitabelisse, mis on algse räsitabeli kahekordne.

Vaikimisi maht ja koormustegur

Räsi tabelit on võimalik luua ilma selle võimsust ja koormustegurit määramata. Näiteks,

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

Vaikimisi,

  • räsikomplekti maht on 16
  • koormustegur on 0,75

HashSeti meetodid

HashSetKlassi pakub erinevaid meetodeid, mis võimaldavad meil sooritada erinevaid toiminguid komplekti.

Sisestage elemendid HashSetti

  • add() - lisab määratud elemendi komplekti
  • addAll() - sisestab komplekti kõik määratletud kogu elemendid

Näiteks,

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

Väljund

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

Juurdepääs HashSeti elementidele

Räsikomplekti elementidele juurde pääsemiseks saame kasutada iterator()meetodit. Selle meetodi kasutamiseks peame java.util.Iteratorpakendi importima . Näiteks,

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

Väljund

 HashSet: (2, 5, 6) HashSet, kasutades Iteratorit: 2, 5, 6, 

Eemalda elemendid

  • remove() - eemaldab määratud elemendi komplektist
  • removeAll() - eemaldab komplektist kõik elemendid

Näiteks,

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

Väljund

HashSet: (2, 5, 6) Kas 5 on eemaldatud? true Kas kõik elemendid on eemaldatud? tõsi

Määra toimingud

HashSetKlassi erinevaid meetodeid saab kasutada ka erinevate komplektoperatsioonide sooritamiseks.

Komplektide liit

Kahe komplekti vahelise liidu teostamiseks saame kasutada addAll()meetodit. Näiteks,

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

Väljund

 HashSet1: (2, 4) HashSet2: (1, 3) Liit on: (1, 2, 3, 4) 

Komplektide ristumiskoht

Kahe komplekti ristumiskoha teostamiseks saame kasutada retainAll()meetodit. Näiteks

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

Väljund

 HashSet1: (2, 3) HashSet2: (2, 4) Ristmik on: (2) 

Komplektide erinevus

Kahe komplekti erinevuse arvutamiseks võime kasutada removeAll()meetodit. Näiteks,

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

Väljund

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

Alamhulk

Et kontrollida, kas komplekt on mõne teise hulga alamhulk või mitte, saame kasutada containsAll()meetodit. Näiteks,

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

Väljund

HashSet1: (1, 2, 3, 4) HashSet2: (2, 3) Kas HashSet2 on HashSet1 alamhulk? tõsi

HashSeti muud meetodid

Meetod Kirjeldus
clone() Loob faili koopia HashSet
contains() Otsib HashSetmääratud elementi ja tagastab tõeväärtuse tulemuse
isEmpty() Kontrollib, kas see HashSeton tühi
size() Tagastab HashSet
clear() Eemaldab rakendusest kõik elemendid HashSet

HashSeti meetodite kohta lisateabe saamiseks külastage Java HashSeti (ametlik Java dokumentatsioon).

Miks just HashSet?

Java-s HashSetkasutatakse seda tavaliselt juhul, kui peame elementidele juurde pääsema juhuslikult. Sellepärast, et räsitabeli elementidele pääseb juurde räsikoodide abil.

Elemendi räsikood on kordumatu identiteet, mis aitab tuvastada räsitabeli elemendi.

HashSetei tohi sisaldada duplikaatelemente. Seega on igal räsikomplekti elemendil unikaalne räsikood.

Märkus. HashSeti pole sünkroonitud. See on siis, kui mitu lõime pääseb korraga räsikomplekti juurde ja üks lõime muudab räsikomplekti. Siis tuleb see väliselt sünkroniseerida.

Huvitavad Artiklid...