Kā mēs zinām, HashSet ir slavena Java klase. HashSet izmanto, lai saglabātu vērtības, izmantojot hash tabulu. Šajā apmācībā mēs apskatīsim HashSet programmā Python. Mēs arī uzzināsim par to, kā mēs varam izstrādāt HashSet programmā Python.
HashSet ir programmēšanas pamatdatu struktūra, kas parasti atrodama tādās valodās kā Java. Tas pieder Java Collections Framework un kalpo kā iestatītās saskarnes ieviešana. HashSet atšķirīgā iezīme ir tā spēja uzglabāt elementus tādā veidā, kas atvieglo konkrētu elementu esamības efektīvu pārbaudi un nodrošina komplekta unikalitāti. Atšķirībā no struktūrām, piemēram, sarakstiem, HashSet neuztur nekādu īpašu secību starp tā elementiem.
Viena no galvenajām HashSet īpašībām ir tās unikalitātes garantija; tas neatļauj dublēt elementus. Tādām darbībām kā elementu pievienošana, noņemšana un klātbūtnes pārbaude parasti ir nemainīga laika vidējā veiktspēja, tādēļ tā ir efektīva izvēle šādiem uzdevumiem. Tomēr ir svarīgi ņemt vērā, ka HashSet elementu secība netiek garantēta.
Galvenās īpašības:
Unikalitāte: HashSet nepieļauj elementu dublikātus. Tā izmanto metodi equals(), lai pārbaudītu, vai nav dublikātu, nodrošinot, ka katrs komplekta elements ir unikāls.
Nav pasūtījuma: HashSet elementi netiek glabāti noteiktā secībā. Ja jums ir jāsaglabā elementu secība, varat apsvērt iespēju izmantot LinkedHashSet, kas uztur ievietošanas secību.
Pamatā esošā datu struktūra: Iekšēji HashSet elementu glabāšanai izmanto jaucējtabulu. Tas nodrošina konstanta laika vidējo sarežģītību pamata darbībām, piemēram, pievienošanai, noņemšanai un saturam.
Nulle elementi: HashSet pieļauj vienu nulles elementu. Ja mēģināsit pievienot nulles elementa dublikātu, tas aizstās esošo.
Ievads
Mēs varam izstrādāt HashSet, neizmantojot jaucējtabulu bibliotēkas. Tālāk ir norādītas vairākas dažādas funkcijas -
pievienot (x) - Add(x) metodi galvenokārt izmanto, lai HashSet ievietotu vērtību x.
satur (x) - Metode satur(x) galvenokārt tiek izmantota, lai pārbaudītu, vai HashSet ir vērtība x.
noņemt (x) - Metode remove(x) galvenokārt tiek izmantota, lai izdzēstu x no HashSet. Ja HashSet nav nekādas vērtības, tas neko nedarīs.
Izpratīsim šīs metodes, izmantojot tālāk sniegto piemēru.
Vispirms inicializējiet HashSet un izsauciet funkciju add(1). Tas jaucējkopai pievienos 1. Izsauciet add(3), kas pievienos 3, pēc tam zvans satur(1). Tas pārbaudīs, vai 1 ir vai nav hash komplektā. Tagad mēs saucam satur(2), pievienot(2), satur(2), noņemt(2), satur(2).
Izvade tiks atgriezta attiecīgi kā patiesa, ja ir 1, false, ja 2 nav, patiess 2 ir, false, ja 2 nav.
HashSet pamatdarbības Python
Mēs varam veikt dažas pamatdarbības HashSet, izmantojot šādas metodes. Izpratīsim šīs metodes.
Jaunu vērtību pievienošana HashSet
Tālāk esošajā piemērā mēs pievienosim vērtību jaucējkopai, izmantojot funkciju add(). Funkcija add() pievieno vērtību pa vienam. Apskatīsim šādu kodu.
Piemērs -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6)
Izvade:
Adding value: 2 Adding value: 7 Adding value: 6
Vērtību noņemšana no HashSet
Mēs varam noņemt esošo vērtību, izmantojot funkciju remove(). Sapratīsim tālāk norādīto kodu.
Piemērs -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.remove(7) obj.remove(6)
Izvade:
Adding value: 2 Adding value: 7 Adding value: 6 Removed value: 7 Removed value: 6
Pārbauda, vai HashSet pastāv vērtības
Šajā piemērā mēs parādīsim, kā mēs varam pārbaudīt, vai konkrēta vērtība pastāv vai neizmanto satur () funkciju. Sapratīsim tālāk norādīto kodu.
Piemērs -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.contains(2)
Izvade:
Adding value: 2 Adding value: 7 Adding value: 6 It contains: 2
HashSet algoritms Python
Pirmajā solī mēs definējam vienu datu struktūru ar nosaukumu HashList. Pēc tam mēs inicializējam tukšu sarakstu kā jauns_saraksts . Pēc tam mēs definējam funkciju update(), kurā Find saglabā Būla vērtību False. Tagad mēs izmantojam cilpu katram indeksam I un K. ja atslēga ir tāda pati kā 'k', tad jauns_saraksts[i]=k un atrada vērtību, kas iestatīta uz True. Ja vērtība netiks atrasta, vērtība tiks ievietota saraksta pēdējā vietā.
Nākamais solis ir definēt funkciju get(), ko izmantosim cilpai, un, ja k vērtība ir tāda pati kā atslēgai, izvade būs True; pretējā gadījumā viltus. Ja atslēga ir tāda pati kā “k”, izdzēsiet vērtību no saraksta new_list. Tas pats process tiks piemērots funkcijā remove().
Tagad mēs izveidosim galveno klasi HashSet. Šī klase deklarēs inicializācijas funkciju, kur key_space vērtība = 2096. Hash_table būs saraksts ar new_list tipa objektiem ar izmēru key_space . Pēc tam mēs izveidosim funkciju add(), kurā hash_key = key%key_space un atjauniniet hash_table [hash_key] atslēgu. Pēc tam mēs piezvanīsim uz noņemšanas funkcija , kurā hash_key = atslēga % key_space, un izdzēsiet hash_table [hash_key] atslēgu. Pēc tam mēs piezvanīsim uz satur funkciju , kurā
hash_key = atslēga % key_space, un iegūstiet hash_table [hash_key] atslēgu.
Apskatīsim pakāpeniskas ieviešanas algoritmu.
java hashset
Algoritms -
- Izveidojiet datu struktūru ar nosaukumu HashSet, inicializējiet to, kā norādīts tālāk
- new_list = []
- Definējiet funkciju update (). Tas prasīs atslēgu
- atrasts := Nepatiess
- katram indeksam i un taustiņam k sarakstā new_list, dariet
- ja atslēga ir tāda pati kā k, tad
- jauns_saraksts[i]:= taustiņš
- atrasts:= Taisnība
- iznāk no cilpas
- ja konstatē nepatiesu, tad
- ievietot taustiņu new_list beigās
- Definējiet funkciju get() . Tas prasīs atslēgu
- katram k sarakstā new_list veiciet
- ja k ir tāds pats kā atslēga, tad
- atgriezties True
- atgriezties Nepatiess
- Definējiet funkciju remove(). Tas prasīs atslēgu
- katram indeksam i un taustiņam k sarakstā new_list, dariet
- ja atslēga ir tāda pati kā k, tad
- dzēst new_list[i]
- Tagad izveidojiet pielāgotu hashSet. Būs dažas šādas metodes
- Inicializējiet to šādi -
- key_space := 2096
- hash_table:= segmenta tipa objektu saraksts ar lieluma key_space
- Definējiet funkciju add(). Tas prasīs atslēgu
- hash_key:= atslēga mod key_space
- izsaukt hash_table[hash_key] update(key)
- Definējiet funkciju remove(). Tas prasīs atslēgu
- hash_key:= keymodkey_space
- dzēšanas atslēga no hash_table[hash_key]
- Definējiet funkciju, kas satur(). Tas prasīs atslēgu
- hash_key:= keymodkey_space
- atgriezt get(key) of hash_table[hash_key]
HashSet ieviešana Python
Šeit mēs ieviesīsim iepriekš minēto algoritmu un izveidosim Python programmu. Mēs definēsim divas klases: HashSet un CreateHashset. Apskatīsim zemāk esošo kodu.
Kods -
# Here, we are Designing the HashSet in python # Here, we are checking the values and will return the output class class verifyvalues: # Here, we are initialization function which has list new_list def __init__(self): self.new_list=[] # Here, we have the function to update values def update(self, key): found=False for i,k in enumerate(self.new_list): if key==k: self.new_list[i]=key found=True break if not found: self.new_list.append(key) # Here, we have function to get values def get(self, key): for k in self.new_list: if k==key: return True return False # Here, we have function to remove values def remove(self, key): for i,k in enumerate(self.new_list): if key==k: del self.new_list[i] # Here, we have defined a class as HashSet class HashSet: # Here, we have defined an Initialization function def __init__(self): self.key_space = 2096 self.hash_table=[verifyvalues() for i in range(self.key_space)] def hash_values(self, key): hash_key=key%self.key_space return hash_key # Here, we have also defined an add function def add(self, key): self.hash_table[self.hash_values(key)].update(key) # Here, we have also defined a remove function def remove(self, key): self.hash_table[self.hash_values(key)].remove(key) # Here, we have defined the contains function def contains(self, key): return self.hash_table[self.hash_values(key)].get(key) def display(self): ls=[] for i in self.hash_table: if len(i.new_list)!=0:ls.append(i.new_list[0]) print(ls) ob = HashSet() print(ob.hash_values(10)) print('Add 10') ob.add(10) print(ob.hash_values(6)) print('Add 6 ') ob.add(6) print(ob.hash_values(5)) print('Add 5 ') ob.add(5) print('Contains 10 : ',ob.contains(10)) print('Contains 3: ',ob.contains(3)) print('Contains 8 : ',ob.contains(9))
Izvade:
10 Add 10 6 Add 6 5 Add 5 Contains 10 : True Contains 3: False Contains 8 : False 2 Add 2 3 Add 3 Contains 2 : True Remove 2 Contains 2 : False Contains 3 : True [3, 5, 6, 10]
Paskaidrojums: