hashmap vs hashtable in java


Antwort 1:

Obwohl beide sehr ähnlich aussehen und java.util.map implementieren. Es gibt nur wenige Unterschiede, die unten aufgeführt sind.

1) Einer der Hauptunterschiede zwischen HashMap und Hashtable besteht darin, dass HashMap nicht synchronisiert ist, während Hashtable synchronisiert ist. Dies bedeutet, dass Hashtable threadsicher ist und von mehreren Threads gemeinsam genutzt werden kann, HashMap jedoch nicht ohne ordnungsgemäße Synchronisierung von mehreren Threads gemeinsam genutzt werden kann. In Java 5 wurde ConcurrentHashMap eingeführt, eine Alternative zu Hashtable, die eine bessere Skalierbarkeit als Hashtable in Java bietet. Synchronisiert bedeutet, dass nur ein Thread eine Hash-Tabelle zu einem bestimmten Zeitpunkt ändern kann. Grundsätzlich bedeutet dies, dass jeder Thread vor dem Aktualisieren einer Hashtabelle eine Sperre für das Objekt erhalten muss, während andere darauf warten, dass die Sperre aufgehoben wird.

2) Die HashMap-Klasse entspricht in etwa Hashtable, außer dass sie Nullen zulässt. (HashMap erlaubt Nullwerte als Schlüssel und Wert, während Hashtable keine Nullen zulässt.)

3) Der dritte signifikante Unterschied zwischen HashMap und Hashtable besteht darin, dass der Iterator in der HashMap ein ausfallsicherer Iterator ist, während der Enumerator für die Hashtable dies nicht ist remove () Methode. Dies ist jedoch kein garantiertes Verhalten und wird von JVM nach besten Kräften durchgeführt. Dies ist auch ein wichtiger Unterschied zwischen Enumeration und Iterator in Java. 4) Ein weiterer bemerkenswerter Unterschied zwischen Hashtable und HashMap besteht darin, dass Hashtable aufgrund der Thread-Sicherheit und Synchronisation viel langsamer als HashMap ist, wenn es in einer Single-Thread-Umgebung verwendet wird. Wenn Sie also keine Synchronisierung benötigen und HashMap nur von einem Thread verwendet wird, führt es Hashtable in Java aus. 5) HashMap garantiert nicht, dass die Reihenfolge der Karte über die Zeit konstant bleibt.


Antwort 2:

Es gibt verschiedene Unterschiede zwischen

HashMap

und

Hash-tabelle

in Java:

  1. Hashtable ist synchronisiert, HashMap nicht. Dies macht HashMap besser für Anwendungen ohne Thread, da nicht synchronisierte Objekte normalerweise eine bessere Leistung erzielen als synchronisierte.
  2. Hashtable erlaubt keine Nullschlüssel oder Werte. HashMap erlaubt einen Nullschlüssel und eine beliebige Anzahl von Nullwerten.
  3. Eine der Unterklassen von HashMap ist LinkedHashMap. Wenn Sie also eine vorhersehbare Iterationsreihenfolge (standardmäßig die Einfügereihenfolge) wünschen, können Sie die HashMap problemlos gegen eine LinkedHashMap austauschen. Dies wäre nicht so einfach, wenn Sie Hashtable verwenden würden.

Da die Synchronisierung für Sie kein Problem darstellt, würde ich empfehlen

HashMap

. Wenn die Synchronisierung zu einem Problem wird, können Sie dies auch überprüfen

ConcurrentHashMap

.

Wenn Sie eine HashMap threadsicher machen möchten, verwenden Sie Collections.synchronizedMap ().


Antwort 3:

Sowohl die HashMap- als auch die Hashtable-Klasse implementieren die Map-Schnittstelle in Java, aber es gibt viele

Unterschiede zwischen HashMap und Hashtable in Java

. Diese sind unten angegeben:

HapMap-Klasse

  • Die HashMap-Klasse ist nicht synchronisiert, dh mehrere Threads können gleichzeitig darauf zugreifen. Mit anderen Worten, es ist nicht threadsicher.
  • Die HashMap-Klasse erlaubt einen Nullschlüssel und mehrere Nullwerte.
  • HashMap erweitert die AbstractMap-Klasse.
  • HashMap bietet schnelle Leistung.
  • HashMap ist eine neue Klasse.
  • Der Iterator von HashMap ist ausfallsicher und löst ConcurrentModificationException aus.

Hashtable-Klasse

  • Die Hashtable-Klasse ist synchronisiert, dh mehrere Threads können nicht gleichzeitig darauf zugreifen. Es ist eine thread-sichere Klasse.
  • Die Hashtable-Klasse erlaubt keine Nullschlüssel- und Nullwerte.
  • Die Hashtable-Klasse erweitert die Dictionary-Klasse.
  • Die Hashtable-Klasse bietet eine langsame Leistung.
  • Es ist eine Legacy-Klasse.
  • Die Aufzählung von Hashtable ist nicht ausfallsicher.

Antwort 4:

Als Einsteiger einer der am häufigsten gestellten

Interview Fragen

geht es um Java HashMap vs Hashtable. Sie müssen also vollständig darauf vorbereitet sein, alle Fragen zu HashMap oder Hashtable zu beantworten. Java verwendet HashMap und Hashtable, um Daten in Form von zu speichern

Schlüssel

und

Werte

. Lassen Sie uns auf den Major hinweisen

Unterschiede zwischen HashMap und Hashtable.

Was ist HashMap?

HashMap

ist eine kartenbasierte Sammlungsklasse in

Java

Hiermit werden Daten in Schlüssel- und Wertepaaren gespeichert. Es hilft bei der Implementierung der Map-Schnittstelle in Java. Es ist im Grunde ein Teil von

Javas Sammlung

seit Java Version 1.2 und bietet die grundlegende Implementierung der Map-Schnittstelle in Java. Um auf einen Wert in der HashMap zugreifen zu können, muss man dessen kennen

Schlüssel

.

Es wird als HashMap bezeichnet, da es eine Technik namens verwendet

Hashing

. Hashing ist ein Prozess zum Konvertieren eines großen

String

zu einem kleineren, indem der Wert des Strings konstant gehalten wird. Der resultierende komprimierte Wert hilft bei der Indizierung und schnelleren Suche.

Was ist ein Hashtable?

Ein Hashtable ist ein

Datenstruktur

Hier werden Schlüssel / Wert-Paare gespeichert. In einer Hashtabelle werden Daten in einem Array-Format gespeichert, wobei jeder Datenwert seinen eigenen eindeutigen Indexwert hat. Sie können sehr schnell auf Daten zugreifen, wenn Sie den Index der gewünschten Daten kennen.

Die Java Hashtable-Klasse implementiert eine Hashtable, die Schlüssel Werten zuordnet. Es erbt die Dictionary-Klasse und implementiert die Map-Schnittstelle.

Hashtable-Erklärung

öffentliche Klasse Hashtable erweitert Wörterbuch implementiert Map , Klonbar, serialisierbar

K: Es ist die Art von Schlüsseln, die von der Karte verwendet werden. V: Dies ist die Art der zugeordneten Werte.

Nachdem Sie verstanden haben, wie HashMap und Hashtable in Java funktionieren, werfen wir einen Blick auf die Parameter, um die Unterschiede zwischen HashMap und Hashtable zu verstehen.

Lassen Sie uns nun auf die Hauptunterschiede zwischen HashMap und Hashtable hinweisen.

Java HashMap vs Hashtable

Wann sollten HashMap und Hashtable verwendet werden?

  • Die Synchronisation ist der Hauptunterschied zwischen Java HashMap und Hashtable. Wenn jedoch eine thread-sichere Operation erforderlich ist, kann Hashtable verwendet werden, da alle Methoden synchronisiert sind. Aber dies ist eine Legacy-Klasse und sie müssen vermieden werden. Dies ist mit HashMap nicht möglich.
  • In einer Multithread-Umgebung können Sie ConcurrentHashMap verwenden, das Hashtable fast ähnlich ist. Hier können Sie die HashMap sogar explizit synchronisieren
  • Der synchronisierte Betrieb führt zu einer schlechten Leistung, daher sollte er vermieden werden, bis er benötigt wird. Daher wird HashMap für die Nicht-Thread-Umgebung ohne Zweifel definitiv verwendet.

Hoffe das hilft:)


Antwort 5:

Der Standardunterschied zwischen Hashmap ist nicht synchronisiert, verglichen mit Hashtable, einer Legacy-Klasse, die synchronisiert ist. Der andere Unterschied besteht darin, dass Hashmap zwar Nullwerte zulässt, Hashtable jedoch nicht. Ein weiterer Unterschied ist, dass der Iterator für Hashmap im Vergleich zu Enumerator für Hashtable ausfallsicherer ist. Tatsächlich bedeutet dies, dass eine ConcurrentModificationException ausgelöst wird, wenn Sie einen Iterator für ein Sammlungsobjekt erstellen und ein anderer Thread versucht, das Sammlungsobjekt gleichzeitig zu ändern.


Antwort 6:

Hashmap vs Hashtable 1. HashMap ist nicht synchronisiert. Es ist nicht threadsicher und kann ohne richtigen Synchronisationscode nicht von vielen Threads gemeinsam genutzt werden, während Hashtable synchronisiert ist. Es ist threadsicher und kann mit vielen Threads geteilt werden. 2. HashMap erlaubt einen Nullschlüssel und mehrere Nullwerte, während Hashtable keinen Nullschlüssel oder Wert zulässt. 3. HashMap wird im Allgemeinen HashTable vorgezogen, wenn keine Thread-Synchronisation erforderlich ist


Antwort 7:

Wie unter beschrieben

Java Die Hashtable-Klasse

::

„Hashtable war Teil der ursprünglichen java.util und ist eine konkrete Implementierung eines Wörterbuchs.

Java 2 hat Hashtable jedoch so überarbeitet, dass es auch die Map-Schnittstelle implementiert. Somit ist Hashtable jetzt in das Sammlungsframework integriert. Es ähnelt HashMap, ist jedoch synchronisiert.

Wie HashMap speichert Hashtable Schlüssel / Wert-Paare in einer Hash-Tabelle. Wenn Sie eine Hashtabelle verwenden, geben Sie ein Objekt an, das als Schlüssel verwendet wird, und den Wert, den Sie mit diesem Schlüssel verknüpfen möchten. Der Schlüssel wird dann gehasht und der resultierende Hash-Code wird als Index verwendet, an dem der Wert in der Tabelle gespeichert wird. “

Weitere Informationen können leicht über eine Suchmaschine gefunden werden.