Unterschied zwischen HashMap und Hashtable in Java
Inhalt
Die HashMap und die Hashtable werden beide verwendet, um a darzustellen Gruppe von Objekten das sind vertreten in
Sehen wir uns die unten gezeigte Vergleichstabelle an, um weitere Unterschiede zwischen HashMap und Hashtable zu erfahren.
- Vergleichstabelle
- Definition
- Hauptunterschiede
- Ähnlichkeiten
- Fazit
Vergleichstabelle
Grundlage für den Vergleich | HashMap | Hash-tabelle |
---|---|---|
Implementieren / Erweitern | Die HashMap-Klasse implementiert die Map-Schnittstelle und erweitert eine AbstractMap-Klasse. | Die Hashtable-Erweiterung der Dictionary Legacy-Klasse wurde jedoch überarbeitet und implementiert jetzt auch die Kartenschnittstelle. |
Synchronisation | HashMap ist nicht synchronisiert und daher ist das HashMap-Objekt nicht threadsicher. | Hashtable ist synchronisiert und daher ist das Objekt von Hashtable threadsicher. |
Schlüssel / Wert | Ein Schlüssel kann den Nullwert nur einmal zurückgeben, ein Wert kann jedoch beliebig oft den Nullwert zurückgeben. | Ein Schlüssel kann nicht Null zurückgeben, da er zum Abrufen des Hash-Codes verwendet wird, der als Index für die Hash-Tabelle verwendet wird, und ein Wert kann auch Null zurückgeben. |
Standard-Anfangskapazität | Die Standard-Anfangskapazität von HashMap ist 16. | Die Standard-Anfangskapazität von Hashtable ist 11. |
Überqueren | HashMap wird von Iterator durchlaufen. | Wie die Map-Klasse unterstützt auch Hashtable Iterator nicht direkt zum Durchlaufen und verwendet daher Enumerator. |
Definition von HashMap
HashMap ist eine Klasse, die das implementiert Karte Schnittstelle und erweitert die AbstractMap Klasse verwendet die Hash-Tabelle. Das HashMap-Objekt verweist auf eine Sammlung / einen Satz von / * K steht für den Schlüssel und V für den Wert * / class HashMap Der erste Konstruktor ist ein Standardkonstruktor, der ein leeres Objekt von HashMap mit einer Standardkapazität von 16 und einem Standardfüllungsgrad von 0,75 initialisiert. Der zweite Konstruktor initialisiert die Hash-Map mit dem Wert von m. Der dritte Konstruktor erstellt eine Hash-Map mit der Anfangskapazität, die dem im Argument „capacity“ angegebenen Wert entspricht. Der vierte Konstruktor initialisiert die Hash-Map mit einer Kapazität und einem Füllungsgrad, die in den Parametern angegeben sind. Lassen Sie uns nun lernen, wie Sie die Einträge in einer Hash-Map füttern. Hashmap hm = new Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} Im obigen Code können Sie sehen, dass ich ein leeres HashMap-Objekt erstellt habe Hm mit voreingestellter Anfangskapazität und voreingestellter Füllrate. Dann habe ich vier Einträge mit der put (K, V) -Methode in die Hash-Map eingefügt, die den Schlüssel dem Wert zuordnet. Sie können feststellen, dass die Einträge nicht in der Reihenfolge bearbeitet werden, in der Sie sie eingeben, da die Reihenfolge der Einfügungen nicht festgelegt ist. Angenommen, Sie haben bereits einen Eintrag Hashtable ist eine Klasse, die das erweitert Wörterbuch Klasse, die eine Legacy-Klasse ist und überarbeitet wurde, um das zu implementieren Karte Schnittstelle. Die Hashtabelle verwendet die Hash-Tabelle als Datenstruktur. Die Hashtable ähnelt der HashMap, da sich hier auch das Objekt von Hashtable auf die Sammlung von Einträgen bezieht, bei denen jeder Eintrag ein Paar von Einträgen ist / * K gibt den Schlüssel und V den Wert an, der dem Schlüssel * / class Hashtable zugeordnet ist Im obigen Code ist der erste Konstruktor ein Standardkonstruktor, der ein leeres Objekt einer Klasse Hashtable erstellt. Die Standardgröße beträgt 11 und der Standardfüllungsgrad 0,75. Der zweite Konstruktor erstellt eine Hash-Tabelle mit der Größe, die dem im Parameter „size“ angegebenen Wert entspricht. Der dritte Konstruktor erstellt eine Hash-Tabelle mit einer Größe und einem Füllgrad, die im Parameter angegeben sind. Der vierte Konstruktor initialisiert die Hash-Tabelle mit dem Wert m. Lassen Sie uns jetzt lernen, wie man das einfügt Hashtable ht = new Hashtable (); ht.put (neuer hashCode (2), 275); ht.put (neuer hashCode (12), 250); ht.put (neuer hashCode (16), 150); ht.put (neuer hashCode (8), 200); System.out.ln (ht); / * output * / {12 = 250, 16 = 150,2y = 275, 8 = 200} Im obigen Code habe ich ein leeres Objekt von Hashtable erstellt und vier Einträge mit der put () -Methode eingefügt. Innerhalb der put-Methode habe ich hashCode () aufgerufen, die den Hashcode-Wert berechnet und zurückgibt, der als Indexwert für das Eintragsobjekt fungiert. Wie Sie sehen, habe ich die Größe der Hash-Tabelle nicht erwähnt, sodass sie standardmäßig 11 ist. Auch hier wird die Einfügereihenfolge nicht beibehalten, und wenn ed-Einträge nicht in der Reihenfolge angezeigt wurden, wurden sie eingespeist. HashMap weist eine bessere Leistung auf, da seine Objekte nicht synchronisiert sind und mehrere Threads gleichzeitig darauf zugreifen können. Daher ist es schneller als Hashtable.Definition von Hashtable
Ähnlichkeiten:
Fazit: