10 Unterschied zwischen HashMap und HashSet mit Beispielen

Contents

Was ist HashMap?

Die Java  HashMap  -Klasse implementiert die Map-Schnittstelle, die es uns ermöglicht,  Schlüssel- und Wertpaare zu speichern , wobei Schlüssel eindeutig sein sollten. Wenn Sie versuchen, den doppelten Schlüssel einzufügen, ersetzt er das Element des entsprechenden Schlüssels. Es ist einfach, Operationen mit dem Schlüsselindex wie Aktualisierung, Löschung usw. durchzuführen. Die Klasse HashMap befindet sich im Paket java.util.

HashMap  ähnelt HashTable, ist aber nicht synchronisiert. Es erlaubt auch die Nullschlüssel zu speichern, aber es sollte nur ein Nullschlüsselobjekt geben und es kann eine beliebige Anzahl von Nullwerten geben. Diese Klasse gibt keine Garantien bezüglich der Reihenfolge der Karte. Um diese Klasse und ihre Methoden zu verwenden, müssen Sie das Paket java.util.HashMap oder seine Oberklasse importieren.

Was ist HashSet?

Die Klasse Java HashSet wird verwendet, um eine Sammlung zu erstellen, die eine Hash-Tabelle zum Speichern verwendet. Sie erbt die AbstractSet-Klasse und implementiert die Set-Schnittstelle. Die Iterationsreihenfolge der Menge wird nicht garantiert, was bedeutet, dass die Klasse die konstante Reihenfolge der Elemente im Laufe der Zeit nicht garantiert. Diese Klasse lässt das Nullelement zu. Die Klasse bietet auch eine konstante Zeitleistung für die grundlegenden Operationen wie Hinzufügen, Entfernen, Enthält und Größe, vorausgesetzt, die Hash-Funktion verteilt die Elemente ordnungsgemäß auf die Buckets.

Lesen Sie auch: Unterschied zwischen HashMap und HashTable

HashSet vs. HashMap in tabellarischer Form

Grundlage des VergleichsHashMapHashSet
BeschreibungHashMap ist eine Implementierung der Map-Schnittstelle.HashSet ist eine Implementierung der Set-Schnittstelle.
DuplikateEs erlaubt keine doppelten Schlüssel, aber es erlaubt, dass doppelte Werte gespeichert werden.Es erlaubt keine doppelten Werte. Falls der Benutzer einen doppelten Wert eingibt, wird der Wert überschrieben.
LagerungWerte in HashMap werden in Form von Schlüssel-Wert-Paaren mit Hilfe der Hashing-Technik gespeichert.Eine HashMap intern, um ihre Objekte zu speichern, dh jedes Mal, wenn ein HashMap-Objekt auch mit dem HashSet-Objekt erstellt wird.
NullwerteEs besteht aus mehreren Nullwerten, aber nur einem einzigen Nullschlüssel.Es erlaubt nur einen einzigen Nullwert.
Einfügen von ElementenDas Einfügen von Elementen in HashMap erfolgt mit Hilfe der Methode put(Object key, Object value).Das Einfügen von Elementen in HashSet erfolgt mit Hilfe der add(Object e)-Methode.
LeistungHashMap ist schneller als HashSet, da jeder Wert einem eindeutigen Schlüssel zugeordnet ist.HashSet ist vergleichsweise langsamer als HashMap, da das zur Berechnung des Hashcode-Werts verwendete Mitgliedsobjekt für zwei Objekte ähnlich sein kann.
Verwendung (wann zu verwenden)Es wird bevorzugt, wenn die Eindeutigkeit von Elementen nicht erforderlich ist.Es wird bevorzugt, wenn die Eindeutigkeit von Elementen erforderlich ist.
Beispiel{1=A, 2=E, 3=O}.
– Hier sind A,E,O Werte und 1,2,3 die jeweiligen Schlüssel.
[A, E, U, I, O]
– Es ist eine Menge und A, E, I, O, U sind die Elemente in der Menge.

Was Sie über HashSet wissen müssen

  • HashSet speichert die Elemente mithilfe eines Mechanismus namens  Hashing.
  • HashSet enthält nur eindeutige Elemente.
  • HashSet lässt Nullwerte zu.
  • HashSet-Klasse ist nicht synchronisiert.
  • HashSet behält die Anzeigenreihenfolge nicht bei. Hier werden Elemente anhand ihres Hashcodes eingefügt.
  • HashSet ist der beste Ansatz für Suchvorgänge.
  • Die anfängliche Standardkapazität von HashSet ist 16 und der Lastfaktor ist 0,75.

Was Sie über HashMap wissen müssen

  • Java HashMap enthält Werte basierend auf dem Schlüssel.
  • Java HashMap enthält nur eindeutige Schlüssel.
  • Java HashMap kann einen Nullschlüssel und mehrere Nullwerte haben.
  • Java HashMap ist nicht synchronisiert.
  • Java HashMap behält keine Reihenfolge bei.
  • Die anfängliche Standardkapazität der Java-HashMap-Klasse beträgt 16 mit einem Lastfaktor von 0,75.

HashMap-Beispiel

HashSet-Beispiel

Lesen Sie auch: Unterschied zwischen Iterator und Enumeration

Ähnlichkeiten zwischen HashMap und HashSet

  • Diese beiden Klassen garantieren nicht, dass die Reihenfolge ihrer Elemente über die Zeit konstant bleibt.
  • Sowohl HashMap als auch HashSet sind nicht synchronisiert, was bedeutet, dass sie nicht für Thread-sichere Operationen geeignet sind, sofern sie nicht explizit synchronisiert werden. 
  • Beide bieten eine konstante Zeitleistung für grundlegende Operationen wie das Hinzufügen, Entfernen von Elementen usw.
  • Wenn Sie sich den Quellcode von HashSet ansehen, stellen Sie möglicherweise fest, dass er von einer HashMap gesichert wird. Im Grunde verwendet es also intern eine HashMap für alle seine Operationen.

osky