Š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.
HashSet
Par 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.HashSet
pakete.
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
HashSet
Klase 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.Iterator
pakotne. 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 kopasremoveAll()
- 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 HashSet
klases 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ē HashSet norādīto elementu un atgriež Būla rezultātu |
isEmpty() | Pārbauda, vai HashSet ir 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ā HashSet
to 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ā.
HashSet
nevar 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.