Som vi vet at HashSet er en kjent klasse i Java. HashSet brukes til å lagre verdiene ved hjelp av en hash-tabell. I denne opplæringen vil vi dekke HashSet i Python. Vi vil også lære om hvordan vi kan designe HashSet i Python.
Et HashSet er en grunnleggende datastruktur i programmering, ofte funnet i språk som Java. Den tilhører Java Collections Framework og fungerer som en implementering av det angitte grensesnittet. Det særegne ved et HashSet er dets evne til å lagre elementer på en måte som muliggjør effektiv kontroll av eksistensen av spesifikke elementer og sikrer unikhet i settet. I motsetning til strukturer som lister, opprettholder ikke et HashSet noen spesifikk rekkefølge blant elementene.
En viktig egenskap ved et HashSet er garantien for unikhet; den tillater ikke dupliserte elementer. Operasjoner som å legge til, fjerne og sjekke for tilstedeværelsen av elementer har vanligvis konstant gjennomsnittlig ytelse, noe som gjør det til et effektivt valg for slike oppgaver. Det er imidlertid viktig å merke seg at rekkefølgen på elementene i et HashSet ikke er garantert.
Nøkkelegenskaper:
Unikhet: Et HashSet tillater ikke dupliserte elementer. Den bruker equals()-metoden for å se etter duplikater, og sikrer at hvert element i settet er unikt.
Ingen bestilling: Elementene i et HashSet er ikke lagret i noen spesiell rekkefølge. Hvis du trenger å opprettholde rekkefølgen på elementene, kan du vurdere å bruke et LinkedHashSet, som opprettholder rekkefølgen for innsetting.
Underliggende datastruktur: Internt bruker et HashSet en hash-tabell for å lagre elementer. Dette gir mulighet for konstant-tid gjennomsnittlig kompleksitet for grunnleggende operasjoner som legg til, fjern og inneholder.
Nullelementer: Et HashSet tillater ett null-element. Hvis du prøver å legge til et duplikat null-element, vil det erstatte det eksisterende.
Introduksjon
Vi kan designe HashSet uten å bruke noen hashtabellbiblioteker. Nedenfor er de mange forskjellige funksjonene -
streng til int i java
legg til (x) - Add(x)-metoden brukes hovedsakelig til å sette inn en verdi x i HashSet.
inneholder (x) - Metoden contains(x) brukes hovedsakelig for å sjekke om en verdi x er tilstede i HashSet eller ikke.
fjern (x) - Remove(x)-metoden brukes hovedsakelig til å slette x fra HashSet. Hvis HashSet ikke har noen verdi, vil det ikke gjøre noe.
La oss forstå disse metodene med eksemplet nedenfor.
Først initialiser HashSet og kall add(1)-funksjonen. Det vil legge til 1 i hash-settet. Call add(3), som vil legge til 3, deretter kallet inneholder(1). Den vil sjekke om 1 er til stede eller ikke i hash-settet. Nå kaller vi contains(2), add(2), contains(2), remove(2), contains(2).
Utgangen vil bli returnert som sann for 1 er tilstede, falsk for 2 er ikke til stede, sann for 2 er til stede, usann for 2 er ikke til stede, henholdsvis.
cm til fot og tommer
Grunnleggende operasjoner for HashSet i Python
Vi kan utføre noen grunnleggende operasjoner i HashSet ved å bruke følgende metoder. La oss forstå disse metodene.
Legger til nye verdier i HashSet
I eksemplet nedenfor vil vi legge til verdien i hash-settet ved å bruke add()-funksjonen. Add()-funksjonen legger til verdien én om gangen. La oss se følgende kode.
Eksempel -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6)
Produksjon:
Adding value: 2 Adding value: 7 Adding value: 6
Fjerner verdier i HashSet
Vi kan fjerne den eksisterende verdien ved å bruke remove()-funksjonen. La oss forstå følgende kode.
Eksempel -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.remove(7) obj.remove(6)
Produksjon:
Adding value: 2 Adding value: 7 Adding value: 6 Removed value: 7 Removed value: 6
Sjekker om verdier finnes i HashSet
I dette eksemplet vil vi demonstrere hvordan vi kan sjekke om en bestemt verdi eksisterer eller ikke bruker inneholder() funksjon. La oss forstå følgende kode.
Eksempel -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.contains(2)
Produksjon:
Adding value: 2 Adding value: 7 Adding value: 6 It contains: 2
Algoritme for HashSet i Python
I det første trinnet definerer vi én datastruktur kalt HashList. Deretter initialiserer vi en tom liste som en ny_liste . Deretter definerer vi en update()-funksjon der found vil lagre en boolsk verdi False. Nå bruker vi for loop for hver indeks I og K. hvis nøkkelen er den samme som 'k', da ny_liste[i]=k og funnet verdi satt til True. Verdien vil bli satt inn på den siste av listen hvis ingen verdi blir funnet.
Det neste trinnet er å definere get()-funksjonen, som vi skal bruke for løkken, og hvis verdien av k er den samme som nøkkelen, vil utgangen være True; ellers falsk. Hvis nøkkelen er den samme som 'k', slett verdien fra listen ny_liste. Den samme prosessen vil bli brukt i remove()-funksjonen.
Nå skal vi lage hovedklassen HashSet. Denne klassen vil erklære initialiseringsfunksjonen der nøkkelmellomromverdien = 2096. Hash_tabellen vil ha en liste over objekter av størrelse av new_list-typen key_space . Deretter vil vi lage add() funksjon, der hash_key = key%key_space og oppdater nøkkelen til hash_table[hash_key]. Etter det vil vi ringe til fjern funksjon , der hash_key = nøkkel % key_space, og slett nøkkelen til hash_table[hash_key]. Etter det vil vi ringe til inneholder funksjon , hvori
hash_key = nøkkel % key_space, og få nøkkelen til hash_table[hash_key].
La oss se den trinnvise implementeringsalgoritmen.
Algoritme -
- Lag datastruktur kalt HashSet, Initialiser den som nedenfor
- ny_liste = []
- Definer en funksjonsoppdatering(). Dette vil ta nøkkelen
- funnet := Falsk
- for hver indeks i og nøkkel k i new_list, gjør
- hvis nøkkelen er den samme som k, da
- new_list[i]:= nøkkel
- funnet:= Sant
- komme ut fra løkken
- hvis funnet falsk, da
- sett inn nøkkel på slutten av new_list
- Definer en funksjon get() . Dette vil ta nøkkelen
- for hver k i ny_liste, gjør
- hvis k er det samme som nøkkel, da
- returner True
- returner False
- Definer en funksjon remove(). Dette vil ta nøkkelen
- for hver indeks i og nøkkel k i new_list, gjør
- hvis nøkkelen er den samme som k, da
- slett ny_liste[i]
- Lag nå tilpasset hashSet. Det vil være få metoder som følger
- Initialiser dette som følger -
- key_space:= 2096
- hash_table:= en liste over objekt av bøttetype med størrelse key_space
- Definer en funksjon add(). Dette vil ta nøkkelen
- hash_key:= key mod key_space
- kall oppdatering(nøkkel) av hash_table[hash_key]
- Definer en funksjon remove(). Dette vil ta nøkkelen
- hash_key:= keymodkey_space
- slett nøkkel fra hash_table[hash_key]
- Definer en funksjon inneholder(). Dette vil ta nøkkelen
- hash_key:= keymodkey_space
- return get(key) av hash_table[hash_key]
Implementering av HashSet i Python
Her vil vi implementere algoritmen ovenfor og lage Python-program. Vi vil definere de to klassene: HashSet og CreateHashset. La oss se koden nedenfor.
Kode -
verdien av strengen
# 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))
Produksjon:
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]
Forklaring: