Wie wir wissen, ist HashSet eine berühmte Klasse in Java. HashSet wird verwendet, um die Werte mithilfe einer Hash-Tabelle zu speichern. In diesem Tutorial behandeln wir HashSet in Python. Wir erfahren auch, wie wir HashSet in Python entwerfen können.
Ein HashSet ist eine grundlegende Datenstruktur in der Programmierung, die häufig in Sprachen wie Java vorkommt. Es gehört zum Java Collections Framework und dient als Implementierung der Set-Schnittstelle. Das besondere Merkmal eines HashSets ist seine Fähigkeit, Elemente auf eine Weise zu speichern, die eine effiziente Überprüfung der Existenz bestimmter Elemente ermöglicht und die Eindeutigkeit innerhalb der Menge gewährleistet. Im Gegensatz zu Strukturen wie Listen behält ein HashSet keine bestimmte Reihenfolge zwischen seinen Elementen bei.
Ein Schlüsselmerkmal eines HashSets ist seine Einzigartigkeitsgarantie; es erlaubt keine doppelten Elemente. Vorgänge wie das Hinzufügen, Entfernen und Überprüfen auf das Vorhandensein von Elementen weisen in der Regel eine konstante durchschnittliche Leistung auf, was sie zu einer effizienten Wahl für solche Aufgaben macht. Es ist jedoch wichtig zu beachten, dass die Reihenfolge der Elemente in einem HashSet nicht garantiert ist.
Konvertieren von String in Integer-Java
Schlüsseleigenschaften:
Einzigartigkeit: Ein HashSet lässt keine doppelten Elemente zu. Es verwendet die Methode equal(), um auf Duplikate zu prüfen und sicherzustellen, dass jedes Element in der Menge eindeutig ist.
Keine Bestellung: Die Elemente in einem HashSet werden nicht in einer bestimmten Reihenfolge gespeichert. Wenn Sie die Reihenfolge der Elemente beibehalten müssen, können Sie die Verwendung eines LinkedHashSets in Betracht ziehen, das die Reihenfolge der Einfügungen beibehält.
Zugrundeliegende Datenstruktur: Intern verwendet ein HashSet eine Hash-Tabelle zum Speichern von Elementen. Dies ermöglicht eine zeitlich konstante durchschnittliche Komplexität für Grundoperationen wie Hinzufügen, Entfernen und Enthalten.
Nullelemente: Ein HashSet erlaubt ein Nullelement. Wenn Sie versuchen, ein doppeltes Nullelement hinzuzufügen, ersetzt es das vorhandene.
Einführung
Wir können HashSet entwerfen, ohne Hash-Tabellenbibliotheken zu verwenden. Nachfolgend sind die verschiedenen Funktionen aufgeführt:
add(x) - Die Methode add(x) wird hauptsächlich verwendet, um einen Wert x in das HashSet einzufügen.
enthält(x) - Die Methode enthält(x) wird hauptsächlich verwendet, um zu überprüfen, ob ein Wert x im HashSet vorhanden ist oder nicht.
entfernen(x) - Die Methode „remove(x)“ wird hauptsächlich zum Löschen von x aus dem HashSet verwendet. Wenn das HashSet keinen Wert hat, wird es nichts bewirken.
Switch-Methode Java
Lassen Sie uns diese Methoden anhand des folgenden Beispiels verstehen.
Initialisieren Sie zunächst das HashSet und rufen Sie die Funktion add(1) auf. Es wird 1 zum Hash-Set hinzugefügt. Rufen Sie add(3) auf, wodurch 3 hinzugefügt wird, und rufen Sie dann CONTAINS(1) auf. Es wird geprüft, ob 1 im Hash-Set vorhanden ist oder nicht. Jetzt rufen wir „enthüllt(2), add(2), enthält(2), entferne(2), enthält(2“) auf.
Die Ausgabe wird als wahr zurückgegeben, wenn 1 vorhanden ist, falsch, wenn 2 nicht vorhanden ist, wahr, wenn 2 vorhanden ist, bzw. falsch, wenn 2 nicht vorhanden ist.
Grundlegende Operationen von HashSet in Python
Mit den folgenden Methoden können wir einige grundlegende Operationen in HashSet ausführen. Lassen Sie uns diese Methoden verstehen.
Neue Werte in HashSet hinzufügen
Im folgenden Beispiel fügen wir den Wert mit der Funktion add() zum Hash-Set hinzu. Die Funktion add() fügt den Wert einzeln hinzu. Sehen wir uns den folgenden Code an.
Beispiel -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6)
Ausgabe:
Adding value: 2 Adding value: 7 Adding value: 6
Werte in HashSet entfernen
Wir können den vorhandenen Wert mit der Funktion „remove()“ entfernen. Lassen Sie uns den folgenden Code verstehen.
Beispiel -
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.remove(7) obj.remove(6)
Ausgabe:
Adding value: 2 Adding value: 7 Adding value: 6 Removed value: 7 Removed value: 6
Überprüfen, ob Werte in HashSet vorhanden sind
In diesem Beispiel zeigen wir, wie wir prüfen können, ob ein bestimmter Wert vorhanden ist oder nicht enthält() Funktion. Lassen Sie uns den folgenden Code verstehen.
Beispiel -
Latex-Schriftgrößen
from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.contains(2)
Ausgabe:
Adding value: 2 Adding value: 7 Adding value: 6 It contains: 2
Algorithmus für das HashSet in Python
Im ersten Schritt definieren wir eine Datenstruktur namens HashList. Dann initialisieren wir eine leere Liste als eine neue_Liste . Dann definieren wir eine update()-Funktion, in der „found“ den booleschen Wert „False“ speichert. Jetzt verwenden wir eine for-Schleife für jeden Index I und K. Wenn der Schlüssel derselbe ist wie „k“, dann new_list[i]=k und gefundener Wert auf True gesetzt. Der Wert wird am Ende der Liste eingefügt, wenn kein Wert gefunden wird.
Der nächste Schritt besteht darin, die Funktion get() zu definieren, die wir für die Schleife verwenden werden. Wenn der Wert von k mit dem Schlüssel übereinstimmt, ist die Ausgabe True; andernfalls Falsch. Wenn der Schlüssel mit „k“ übereinstimmt, löschen Sie den Wert aus der Liste neue Liste. Der gleiche Vorgang wird in der Funktion „remove()“ angewendet.
Jetzt erstellen wir die Hauptklasse HashSet. Diese Klasse deklariert die Initialisierungsfunktion, wobei der key_space-Wert = 2096 ist. Die hash_table enthält eine Liste von Objekten vom Typ new_list der Größe key_space . Dann erstellen wir die Funktion add(), in der hash_key = key%key_space und aktualisieren Sie den Schlüssel von hash_table[hash_key]. Danach rufen wir an Funktion entfernen , wobei hash_key = key % key_space ist, und den Schlüssel von hash_table[hash_key] löschen. Danach rufen wir an enthält Funktion , in welchem
hash_key = key % key_space und holen Sie sich den Schlüssel von hash_table[hash_key].
Sehen wir uns den schrittweisen Implementierungsalgorithmus an.
Was ist Regex Java?
Algorithmus -
- Erstellen Sie eine Datenstruktur namens HashSet und initialisieren Sie sie wie unten beschrieben
- new_list = []
- Definieren Sie eine Funktion update(). Dafür wird der Schlüssel benötigt
- gefunden := Falsch
- Tun Sie dies für jeden Index i und Schlüssel k in new_list
- Wenn der Schlüssel mit k identisch ist, dann
- new_list[i]:= Schlüssel
- gefunden:= Wahr
- Komm aus der Schleife
- wenn es als falsch befunden wird, dann
- Fügen Sie den Schlüssel am Ende von new_list ein
- Definieren Sie eine Funktion get() . Dafür wird der Schlüssel benötigt
- für jedes k in new_list tun
- Wenn k mit dem Schlüssel übereinstimmt, dann
- Rückgabe True
- falsch zurückgeben
- Definieren Sie eine Funktion „remove()“. Dafür wird der Schlüssel benötigt
- Tun Sie dies für jeden Index i und Schlüssel k in new_list
- Wenn der Schlüssel mit k identisch ist, dann
- new_list[i] löschen
- Erstellen Sie nun ein benutzerdefiniertes HashSet. Es gibt einige Methoden wie folgt
- Initialisieren Sie dies wie folgt:
- key_space := 2096
- hash_table:= eine Liste von Objekten vom Typ Bucket mit der Größe key_space
- Definieren Sie eine Funktion add(). Dafür wird der Schlüssel benötigt
- hash_key:= key mod key_space
- Rufen Sie update(key) von hash_table[hash_key] auf
- Definieren Sie eine Funktion „remove()“. Dafür wird der Schlüssel benötigt
- hash_key:= keymodkey_space
- Schlüssel aus hash_table[hash_key] löschen
- Definieren Sie eine Funktion enthält(). Dafür wird der Schlüssel benötigt
- hash_key:= keymodkey_space
- get(key) von hash_table[hash_key] zurückgeben
Implementierung von HashSet in Python
Hier implementieren wir den obigen Algorithmus und erstellen ein Python-Programm. Wir werden die beiden Klassen definieren: HashSet und CreateHashset. Sehen wir uns den folgenden Code an.
Code -
# 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))
Ausgabe:
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]
Erläuterung: