Mint tudjuk, a HashSet egy híres osztály a Java nyelven. A HashSet az értékek tárolására szolgál egy hash tábla segítségével. Ebben az oktatóanyagban a Python HashSettel foglalkozunk. Megtanuljuk azt is, hogyan tervezhetjük meg a HashSet-et Pythonban.
A HashSet a programozás alapvető adatszerkezete, amely gyakran megtalálható olyan nyelvekben, mint a Java. A Java Collections Framework-hez tartozik, és a beállított felület megvalósításaként szolgál. A HashSet megkülönböztető jellemzője, hogy képes olyan elemeket tárolni, amelyek megkönnyítik az egyes elemek létezésének hatékony ellenőrzését, és biztosítják a halmazon belüli egyediséget. Az olyan struktúrákkal ellentétben, mint a listák, a HashSet nem tart fenn meghatározott sorrendet az elemei között.
A HashSet egyik legfontosabb jellemzője az egyediség garanciája; nem engedélyezi az elemek duplikálását. Az olyan műveletek, mint az elemek hozzáadása, eltávolítása és meglétének ellenőrzése, általában állandó idejű átlagos teljesítményt nyújtanak, így hatékony választás az ilyen feladatokhoz. Fontos azonban megjegyezni, hogy a HashSet elemeinek sorrendje nem garantált.
Főbb jellemzők:
Egyediség: A HashSet nem engedélyezi az elemek ismétlődését. Az equals() metódus segítségével ellenőrzi a duplikációkat, biztosítva, hogy a halmaz minden eleme egyedi legyen.
egy karakterlánc felosztása c++-ban
Nincs rendelés: A HashSet elemei nem tárolódnak semmilyen meghatározott sorrendben. Ha fenn kell tartania az elemek sorrendjét, fontolóra veheti a LinkedHashSet használatát, amely fenntartja a beillesztési sorrendet.
Mögöttes adatstruktúra: Belsőleg a HashSet hash táblát használ az elemek tárolására. Ez lehetővé teszi az állandó idejű átlagos bonyolultságot az alapvető műveleteknél, mint például a hozzáadás, az eltávolítás és a tartalom.
Null elemek: A HashSet egy null elemet engedélyez. Ha ismétlődő null elemet kísérel meg hozzáadni, az lecseréli a meglévőt.
Bevezetés
Tervezhetjük a HashSet-et hash táblakönyvtárak használata nélkül. Az alábbiakban több különböző funkció található -
add (x) - Az add(x) metódus főleg x érték beszúrására szolgál a HashSetbe.
tartalmaz (x) - A include(x) metódus elsősorban annak ellenőrzésére szolgál, hogy van-e x érték a HashSetben vagy sem.
távolítsa el (x) - A remove(x) metódus főleg x törlésére szolgál a HashSetből. Ha a HashSetnek nincs értéke, akkor semmit sem fog csinálni.
Nézzük meg ezeket a módszereket az alábbi példán keresztül.
bájtok a python karakterlánchoz
Először inicializálja a HashSet-et, és hívja meg az add(1) függvényt. Ez hozzáad 1-et a hash készlethez. Hívja az add(3) hívást, amely hozzáad 3-at, majd a hívás tartalmazza (1). Ellenőrzi, hogy az 1 szerepel-e a hash készletben vagy sem. Most meghívjuk a include(2), add(2), include(2), remove(2), include(2) parancsokat.
A kimenet úgy kerül visszaadásra, hogy az igaz, ha 1 van jelen, hamis ha 2 nincs jelen, igaz 2 esetén van, hamis ha 2 nincs jelen, ill.
A HashSet alapvető műveletei Pythonban
Néhány alapvető műveletet elvégezhetünk a HashSetben a következő módszerekkel. Értsük meg ezeket a módszereket.
Új értékek hozzáadása a HashSetben
Az alábbi példában hozzáadjuk az értéket a hash halmazhoz az add() függvény segítségével. Az add() függvény egyesével adja hozzá az értéket. Lássuk a következő kódot.
Példa -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6)
Kimenet:
: java-ban
Adding value: 2 Adding value: 7 Adding value: 6
Értékek eltávolítása a HashSetben
A meglévő értéket a remove() függvénnyel távolíthatjuk el. Értsük meg a következő kódot.
Példa -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.remove(7) obj.remove(6)
Kimenet:
Adding value: 2 Adding value: 7 Adding value: 6 Removed value: 7 Removed value: 6
Annak ellenőrzése, hogy vannak-e értékek a HashSetben
Ebben a példában bemutatjuk, hogyan ellenőrizhetjük, hogy egy adott érték létezik-e, vagy nem használja a tartalmazza () funkció. Értsük meg a következő kódot.
Példa -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.contains(2)
Kimenet:
Adding value: 2 Adding value: 7 Adding value: 6 It contains: 2
Algoritmus a HashSethez Pythonban
Első lépésben meghatározunk egy adatstruktúrát, a HashList nevet. Ezután inicializálunk egy üres listát mint egy new_list . Ezután meghatározunk egy update() függvényt, amelyben a found egy False logikai értéket fog tárolni. Most minden I és K indexhez for ciklust használunk. Ha a kulcs ugyanaz, mint a 'k', akkor új_lista[i]=k és talált értéket igazra állítva. Ha nem talál értéket, az érték a lista utolsó részébe kerül be.
A következő lépés a get() függvény definiálása, amit a ciklushoz fogunk használni, és ha k értéke megegyezik a kulccsal, a kimenet True lesz; egyébként hamis. Ha a kulcs ugyanaz, mint a „k”, törölje az értéket a listából new_list. Ugyanezt a folyamatot alkalmazzuk a remove() függvényben is.
Most létrehozzuk a HashSet főosztályt. Ez az osztály deklarálja az inicializálási függvényt, ahol a key_space értéke = 2096. A hash_table tartalmazni fog egy listát a new_list típusú objektumok méretéről key_space . Ezután létrehozzuk az add() függvényt, amelyben hash_key = kulcs%key_space és frissítse a hash_table[hash_key] kulcsát. Ezt követően felhívjuk a eltávolítás funkció , amelyben hash_key = kulcs % kulcsszóköz, és törölje a hash_table[hash_key] kulcsát. Ezt követően felhívjuk a funkciót tartalmaz , amiben
hash_key = kulcs % key_space, és kapja meg a hash_table[hash_key] kulcsát.
Lássuk a lépésenkénti megvalósítási algoritmust.
Algoritmus -
- Hozzon létre HashSet nevű adatstruktúrát, és inicializálja az alábbiak szerint
- new_list = []
- Határozzon meg egy függvényfrissítést (). Ehhez kulcsra lesz szükség
- talált := Hamis
- az új_listában minden i indexhez és k kulcshoz do
- ha a kulcs ugyanaz, mint a k, akkor
- new_list[i]:= kulcs
- találtam:= Igaz
- kijön a hurokból
- ha hamisnak találják, akkor
- beszúrás kulcs a new_list végén
- Határozzon meg egy get() függvényt. Ehhez kulcsra lesz szükség
- az új_listában minden egyes k-hez do
- ha k ugyanaz, mint a kulcs, akkor
- vissza True
- return False
- Határozzon meg egy remove() függvényt. Ehhez kulcsra lesz szükség
- az új_listában minden i indexhez és k kulcshoz do
- ha a kulcs ugyanaz, mint a k, akkor
- új_lista[i] törlése
- Most hozzon létre egyéni hashSet-et. Az alábbiak szerint néhány módszer lesz
- Inicializálja ezt a következőképpen -
- key_space := 2096
- hash_table:= a key_space méretű vödör típusú objektumok listája
- Adjon meg egy add() függvényt. Ehhez kulcsra lesz szükség
- hash_key:= kulcs mod key_space
- a hash_table[hash_key] update(key) hívása
- Határozzon meg egy remove() függvényt. Ehhez kulcsra lesz szükség
- hash_key:= keymodkey_space
- törlés kulcsa a hash_table[hash_key]
- Határozzon meg egy függvényt, amely tartalmazza(). Ehhez kulcsra lesz szükség
- hash_key:= keymodkey_space
- return get(key) of hash_table[hash_key]
A HashSet megvalósítása Pythonban
Itt megvalósítjuk a fenti algoritmust, és létrehozzuk a Python programot. Meghatározzuk a két osztályt: HashSet és CreateHashset. Lássuk az alábbi kódot.
Kód -
java regexben
# 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))
Kimenet:
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]
Magyarázat: