Unterschied zwischen Hashmap und Hashtable

Unterschied zwischen Hashmap und Hashtable

Das Java -Sammlungs -Framework bietet eine Reihe von Sammelklassen. Jede Klasse hat ihre eigenen Leistungsstärken und Schwächen. Einige der Klassen bieten vollständige Implementierungen, die als IS verwendet werden können. Andere sind abstrakt, die Skelettimplementierungen bereitstellen, die als Ausgangspunkte für die Erstellung von Sammlungen verwendet werden. Die Sammlungsimplementierungen verwenden das synchronisierte Schreibframework, um synchronisierte Klassen bereitzustellen, da die Implementierungen nicht synchronisiert sind. Mehrere Klassen bieten Implementierungen der Kartenschnittstelle.

Die Java-Plattform enthält drei allgemeine Kartenimplementierungen: HashMap, Treemap und LinkedHasMap. Hashmap und Hashtable sind zwei Sammlungen in Java, mit der Schlüssel-/Wertpaare in einer Hash -Tabelle gespeichert werden. Hashtable ist eine synchronisierte Karte und HashMap ist eine unsynchronisierte Karte. Wenn Sie jedoch eine synchronisierte Karte verwenden müssen, ist ein Hashtable schneller als eine HashMap in einem synchronisierten Wrapper. Beide sind Hash-basierte Sammlungen in Java, aber sie haben einen angemessenen Anteil an Unterschieden. Wir heben einige wichtige Unterschiede zwischen den beiden hervor, um die Begriffe besser zu verstehen.

Was ist Hashmap?

HashMap ist eine Kartenimplementierung, die auf einer Hash-Tabelle basiert, die eine konstante Leistung zum Einfügen und Auffinden von Paaren bietet. Die HashMap -Klasse bietet eine Kartenimplementierung, die auf einer Hashtable -Datenstruktur basiert. Diese Implementierung unterstützt alle Kartenvorgänge und ermöglicht mehrere Nullwerte, aber nur einen Nullschlüssel. Es verwendet Schlüssel-/Wertpaare, um Werte in einer Hash -Tabelle zu speichern. Es handelt sich um eine unsynchronisierte Karte.

Was ist Hashtable?

Im Gegensatz zu HashMap ist Hashtable eine synchronisierte Karte und es ist Thread-Safe, was bedeutet, dass sie zwischen mehreren Threads gemeinsam genutzt werden kann. In Hashtable geben Sie ein Objekt an, das als Schlüssel und den Wert zum Schlüssel verwendet werden kann. Ein Hashtable -Kartenschlüssel für Werte mit Hilfe einer Hash -Funktion. Java liefert diese Funktion in Form der HashCode () -Methode des Objekts, die Klassen überschreiben, um geeignete Hash -Codes bereitzustellen. Im Gegensatz zu HashMap unterstützt Hashtable keine Nullwerte und Nullschlüssel.

Unterschied zwischen Hashmap und Hashtable

  1. Grundlagen von Hashmap vs. Hash-tabelle

Beide sind Hash-basierte Sammlungen in Java, die zum Speichern von Daten in Schlüssel-/Wertpaaren verwendet werden. HashMap ist eine Kartenimplementierung, die auf einer Hash-Tabelle basiert, die eine konstante Leistung zum Einfügen und Auffinden von Paaren bietet. Die Leistung kann durch die Verwendung von Konstruktoren eingestellt werden, mit denen Sie die Kapazität und den Lastfaktor der Hash -Tabelle festlegen können. Das grundlegende Hashtable ist dem HashMap ziemlich ähnlich, auch die Methodennamen. Es speichert ein Schlüssel-/Wertpaar in der Hash -Tabelle. In Hashtable geben Sie ein Objekt an, das als Schlüssel und den Wert zum Schlüssel verwendet werden kann.

  1. Synchronisation von HashMap vs. Hash-tabelle

Sowohl Hashmap als auch Hashtable verwenden Hashing -Techniken, um Werte basierend auf dem Schlüssel zu speichern. Wie HashMap verwendet Hashtable Schlüssel-/Wertpaare, um Werte in einer Hash -Tabelle zu speichern. Der Schlüsselunterschied zwischen beiden ist jedoch die Synchronisation. HashMap ist eine unsynchronisierte Karte, während Hashtable eine synchronisierte Karte ist. Dies bedeutet, dass HashMap nicht mit Thread-sicher ist und nicht zwischen mehreren Threads ohne ordnungsgemäße Synchronisationscode geteilt werden kann. Im Gegenteil ist Hashtable mit Thread-Sicherheit und kann zwischen mehreren Threads geteilt werden. Hashtable ist schneller als die Verwendung eines HashMap in einem synchronisierten Wrapper, wenn Sie eine synchronisierte Karte verwenden müssen.

  1. Nullschlüssel und Nullwerte für Hashmap vs. Hash-tabelle

Die HashMap -Klasse bietet eine Kartenimplementierung, die auf einer Hashtable -Datenstruktur basiert. Diese Implementierung unterstützt alle Kartenvorgänge und ermöglicht mehrere Nullwerte, aber nur einen Nullschlüssel, damit sie eindeutige Schlüsseleigenschaften beibehalten können. Es ist jedoch keine Garantien für die Reihenfolge, in der die Einträge gespeichert werden. Der Hashtabelle hingegen kartiert Schlüssel zu Werten mit Hilfe einer Hash -Funktion. Im Gegensatz zu HashMap unterstützt Hashtable keine Nullwerte und Nullschlüssel.

  1. Leistung von Hashmap vs. Hash-tabelle

Da HashMap keine synchronisierte Karte ist, ist sie in Bezug auf die Leistung viel schneller und besser als ein Hashtable und verwendet tatsächlich weniger Speicher als Hashtable. Obwohl sie praktisch identisch sind, ist Hashtable etwas langsamer als ein Hashmap, aber schneller als ein synchronisiertes Hashmap. Inhärent ist es nicht sicher, Hashtable mit Multithread -Zugriff zu verwenden, da nur die Methoden synchronisiert sind. Hashtable ist das synchronisierte Gegenstück zu HashMap. Unsynchronisierte Objekte werden im Vergleich zu synchronisierten Objekten besser abschneiden.

Hashmap vs. Hashtable: Vergleichstabelle

 

Zusammenfassung von Hashmap vs. Hash-tabelle

Die Hashmap -Klasse bietet Ihnen eine ungewöhnliche, ungeordnete Karte. Wenn Sie also eine Karte benötigen und sich nicht um die Reihenfolge kümmern, in der die Einträge gespeichert werden, ist Hashmap der richtige Weg, um zu gehen.

Hashtable, genau wie Vector, war aus prähistorischen Java -Zeiten. Genau wie Vector ist Hashtable das synchronisierte Gegenstück zu HashMap, ein synchronisiertes Gegenstück zum moderneren und fortschrittlicheren ArrayList, Hashtable. Eine Klasse kann jedoch nicht synchronisiert werden. Wenn wir also sagen, dass Hashtable eine synchronisierte Karte ist, bedeutet dies, dass die Schlüsselmethoden der Klasse synchronisiert sind. 

Während beide praktisch identisch sind, liegt der Unterschied in der Art und Weise, wie sie synchronisiert sind und wie sie ausführen. HashMap ist in einer Mehrfadenumgebung besser abgestimmt, während Hashtable in einer einzelnen Fadenumgebung besser abschneidet.