Java HashSet

Šajā apmācībā mēs uzzināsim par Java HashSet klasi. Mēs uzzināsim par dažādām hash set metodēm un operācijām ar piemēru palīdzību.

HashSetPar Java Kolekcijas ietvaros klase nodrošina funkcionalitāti hash tabulas datu struktūru.

Tas īsteno iestatīšanas saskarni.

HashSet izveide

Lai izveidotu jaukšanas komplektu, mums vispirms ir jāimportē java.util.HashSetpakete.

Pēc pakotnes importēšanas šeit mēs varam izveidot jaucējkomandu kopas.

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

Šeit mēs esam izveidojuši hash komplektu ar nosaukumu numbers.

Paziņojums, daļa ir jauna HashSet(8, 0.75). Pirmais parametrs ir kapacitāte , bet otrais parametrs - loadFactor .

  • ietilpība - šī jaucējkomplekta ietilpība ir 8. Tas nozīmē, ka tajā var uzglabāt 8 elementus.
  • loadFactor - šī jaucējkopa kopas slodzes koeficients ir 0,6. Tas nozīmē, ka ikreiz, kad mūsu jaukšanas komplekts tiek aizpildīts par 60%, elementi tiek pārvietoti uz jaunu jaukšanas tabulu, kas ir divreiz lielāka par sākotnējās jaukšanas tabulas lielumu.

Noklusējuma jauda un slodzes koeficients

Ir iespējams izveidot jaukšanas tabulu, nenosakot tās jaudu un slodzes koeficientu. Piemēram,

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

Pēc noklusējuma,

  • jaucējkomplekta jauda būs 16
  • slodzes koeficients būs 0,75

HashSet metodes

HashSetKlase nodrošina dažādas metodes, kas ļauj mums veikt dažādas darbības, par komplektu.

Ievietojiet elementus HashSet

  • add() - ievieto norādīto elementu komplektā
  • addAll() - ievieto komplektā visus norādītās kolekcijas elementus

Piemēram,

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

Rezultāts

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

Piekļūstiet HashSet elementiem

Lai piekļūtu hash komplekta elementiem, mēs varam izmantot iterator()metodi. Lai izmantotu šo metodi, mums ir jāimportē java.util.Iteratorpakotne. Piemēram,

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

Rezultāts

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

Noņemt elementus

  • remove() - noņem norādīto elementu no kopas
  • removeAll() - noņem visus elementus no kopas

Piemēram,

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

Rezultāts

HashSet: (2, 5, 6) Vai 5 ir noņemti? true Vai visi elementi ir noņemti? taisnība

Iestatīt operācijas

Dažādas HashSetklases metodes var izmantot arī dažādu kopu darbību veikšanai.

Komplektu savienība

Lai veiktu savienojumu starp divām kopām, mēs varam izmantot addAll()metodi. Piemēram,

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

Rezultāts

 HashSet1: (2, 4) HashSet2: (1, 3) Savienība ir: (1, 2, 3, 4) 

Komplektu krustojums

Lai veiktu divu kopu krustojumu, mēs varam izmantot retainAll()metodi. Piemēram

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

Rezultāts

 HashSet1: (2, 3) HashSet2: (2, 4) Krustojums ir: (2) 

Komplektu atšķirība

Lai aprēķinātu starpību starp abām kopām, mēs varam izmantot removeAll()metodi. Piemēram,

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

Rezultāts

 HashSet1: (2, 3, 5) HashSet2: (1, 3, 5) Atšķirība: (2) 

Apakškopa

Lai pārbaudītu, vai kopa ir citas kopas apakškopa, mēs varam izmantot containsAll()metodi. Piemēram,

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

Rezultāts

HashSet1: (1, 2, 3, 4) HashSet2: (2, 3) Vai HashSet2 ir HashSet1 apakškopa? taisnība

Citas HashSet metodes

Metode Apraksts
clone() Izveido faila kopiju HashSet
contains() Meklē HashSetnorādīto elementu un atgriež Būla rezultātu
isEmpty() Pārbauda, ​​vai HashSetir tukšs
size() Atgriež HashSet
clear() Noņem visus elementus no HashSet

Lai uzzinātu vairāk par HashSet metodēm, apmeklējiet Java HashSet (oficiālā Java dokumentācija).

Kāpēc HashSet?

Java valodā HashSetto parasti izmanto, ja mums elementiem ir jāpiekļūst nejauši. Tas ir tāpēc, ka hash tabulas elementiem var piekļūt, izmantojot hash kodus.

Elementa hashcode ir unikāla identitāte, kas palīdz identificēt elementu hash tabulā.

HashSetnevar saturēt elementu dublikātus. Tādējādi katram hash set elementam ir unikāls hashcode.

Piezīme: HashSet nav sinhronizēts. Tas ir, ja vairāki pavedieni vienlaikus piekļūst jaukšanas kopai un viens no pavedieniem maina jaukšanas kopu. Tad tam jābūt ārēji sinhronizētam.

Interesanti raksti...