Unterschiede zwischen HashMap und HashTable in Java

Veröffentlicht: 2021-06-02

Wenn Sie etwas über Java und seine Anwendungen lernen, müssen Sie auf HashMap und HashTable gestoßen sein. Beide gehören zu den wichtigsten Klassen im Java-Collection-Framework. Sie werden sie während der Entwicklung mit Java ausgiebig verwenden, weshalb es wichtig ist, ihre Unterschiede zu verstehen.

In den folgenden Punkten behandeln wir das Thema HashTable vs. HashMap im Detail und erklären die Unterschiede zwischen den beiden:

Inhaltsverzeichnis

Was ist HashMap?

HashMap ist seit der Einführung von Java 1.2 in der Sammlung von Java enthalten. Es ermöglicht Ihnen, grundlegende Implementierungen der Map-Schnittstelle von Java durchzuführen. HashMap speichert Daten in (Schlüssel, Wert)-Paaren, und um darauf zuzugreifen, müssen Sie einen Index eines anderen Typs verwenden, z. B. eine ganze Zahl.

Hier verwenden Sie ein Objekt als Schlüssel (Index) für ein anderes Objekt (Wert), daher die Verwendung eines (Schlüssel, Wert)-Paares. Wenn Sie einen doppelten Schlüssel hinzufügen, ersetzt dieser das Element des entsprechenden Schlüssels.

Funktionen von HashMap

Um die Unterschiede zwischen HashTable und HashMap zu verstehen, müssen Sie zunächst ihre Funktionen verstehen. Es würde Sie mit den Grundlagen von beiden vertraut machen. HashMap hat die folgenden Funktionen:

  • Es ist Teil des Pakets java.util.
  • Es erweitert eine abstrakte Klasse AbstractMap, die eine unvollständige Implementierung der Map-Schnittstelle bereitstellt.
  • Neben der Implementierung der Map-Schnittstelle werden auch serialisierbare und klonbare Schnittstellen implementiert.
  • Es erlaubt doppelte Werte, aber keine doppelten Schlüssel. Das bedeutet, dass ein Schlüssel nicht mehr als einen Wert haben kann, aber mehrere Schlüssel können einen einzigen Wert haben.
  • Sie können den Nullschlüssel nur einmal in einer HashMap verwenden, aber Sie können mehrere Nullwerte verwenden.
  • Es gibt keine Garantien für die Reihenfolge der Karte, insbesondere ob die Reihenfolge im Laufe der Zeit konstant bleibt oder nicht. HashMap ist HashTable fast ähnlich, aber nicht synchronisiert.
  • HashSet verwendet HashMap intern.

Was ist HashTable?

Sie verwenden die HashTable-Klasse, um eine Hashtabelle zu implementieren, die Schlüssel Werten zuordnet. Hier können Sie Nicht-Null-Objekte als Schlüssel oder als Wert verwenden. Denken Sie daran, dass zum erfolgreichen Speichern und Abrufen von Objekten aus einer Hashtabelle die als Schlüssel verwendeten Objekte die hashCode-Methode und die equals-Methode implementieren müssen.

Eine Hashtabelle speichert Daten in einem Array-Format, und jeder Datenwert hat einen eindeutigen Indexwert. Dadurch können Sie sehr schnell auf bestimmte Daten zugreifen, wenn Sie den erforderlichen Index kennen.

Funktionen von HashTable

HashTable hat seine besonderen Eigenschaften, genau wie HashMap. Diese Funktionen machen es jedoch in vielerlei Hinsicht einzigartig und anders als HashMap:

  • HashTable ist HashMap ziemlich ähnlich, aber synchronisiert.
  • Es speichert Schlüssel-Wert-Paare in einer Hash-Tabelle.
  • Hier geben Sie ein als Schlüssel verwendetes Objekt und den Wert an, den Sie ihm zuordnen möchten. Dann hashen Sie den Schlüssel und verwenden den generierten Hashcode als Index, in dem Sie den Wert in der Tabelle speichern.
  • Die Standardkapazität der Hashtable-Klasse beträgt 11 und der Lastfaktor 0,75.
  • HashMap bietet keine Aufzählung, während Hashtable keine ausfallsichere Aufzählung bietet.

Unterschiede zwischen HashMap und HashTable

Nachdem Sie nun die besonderen Highlights von HashMap und HashTable kennen, werden wir sie jetzt vergleichen und die markanten Unterschiede zwischen den beiden sehen:

HashMap Hash-tabelle
Es ist nicht synchronisiert. Sie können hier nicht viele Threads teilen, ohne den richtigen Synchronisierungscode zu verwenden, da er nicht Thread-sicher ist. Es ist synchronisiert. Sie können es mit vielen Threads teilen, da es Thread-sicher ist.
Es erbt die AbstractMap-Klasse. Sie erbt die Dictionary-Klasse.
Hier ist der Iterator fall-fast. In HashTable ist der Enumerator nicht fall-fast.
Der Iterator durchläuft die HashMap. Der Enumerator und der Iterator durchlaufen die HashTable.
Sie können eine HashMap synchronisieren, indem Sie den Code aufrufen
Karte m = Collections.synchronisedMap(hashMap);
Hash-Tabellen werden intern synchronisiert, und Sie können sie mit keinem Code desynchronisieren.
Es ist ziemlich schnell. Es ist relativ langsamer als HashMap.
HashMap ist eine neue Klasse und wurde kürzlich in JDK 1.2 eingeführt. HashTable ist eine Legacy-Klasse.
Es erlaubt mehrere Nullwerte und einen Nullschlüssel. Es erlaubt keine Nullwerte oder Schlüssel.

Codierungsbeispiel

Im Folgenden finden Sie ein Beispiel für die Arbeit von HashMap und HashTable, damit Sie die Unterschiede zwischen HashMap und HashTable verstehen können.

Eingang:

java.util.* importieren;

java.lang.* importieren;

java.io.* importieren;

öffentliche Klasse JavaTester{

public static void main(String args[]){

Hashtable ht=neue Hashtable();

ht.put(1, „Uday“);

ht.put(1,”Ujjwal”);

ht.put(2,”Sumit”);

ht.put(3, „Vijay“);

System.out.println(“————-Hash-Tabelle————–“);

Set<Integer> keySet = ht.keySet();

for (Integer key:keySet) {

System.out.println(Schlüssel + ” “+ht.get(Schlüssel));

}

HashMap hm=neue HashMap();

hm.put(0,”Uday”);

hm.put(4,”Uday”); // Sie können doppelte Werte in einer Hashmap haben

hm.put(1,”Sumit”);

hm.put(2,”Vijay”);

System.out.println(“———–Hashmap———–“);

Set<Integer> keySet1 = ht.keySet();

for (Integer key:keySet) {

System.out.println(Schlüssel + ” “+hm.get(Schlüssel));

}

}

}

Ausgabe:

Hash-tabelle:

3 Vijay

2 Gipfel

1 Ujjwal

Hash-Karte:

0 Tag

1 Gipfel

2 Vijay

4 Uday

Wann sollte man HashMap vs. HashTable verwenden?

Der Hauptfaktor, der bestimmt, ob Sie HashMap oder HashTable verwenden, ist die Synchronisierung. Wenn Sie eine Thread-sichere Aufgabe benötigen, sollten Sie HashTable verwenden, da alle seine Methoden synchronisiert sind. Es handelt sich jedoch um eine Legacy-Klasse, und Sie sollten sie vermeiden.

Wenn Sie eine Multithread-Umgebung haben, sollten Sie ConcurrentHashMap verwenden, da es HashTable ziemlich ähnlich ist. Es ermöglicht Ihnen, die HashMap richtig zu synchronisieren.

Synchronisierte Vorgänge verursachen eine schlechte Leistung, daher sollten Sie sie in den meisten Fällen vermeiden. Darüber hinaus eignet sich HashMap für eine Umgebung ohne Threads, sodass Sie es problemlos verwenden können.

Lernen Sie Softwarekurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Fazit

HashMap und HashTable sind beliebte Java-Codes mit ähnlichen Funktionen. Wie Sie jedoch sehen können, gibt es einige markante Unterschiede zwischen den beiden. HashMap ist eine Java-Klasse, während HashTable eine Datenstruktur ist.

Wenn Sie mehr über Java und andere Programmiersprachen erfahren möchten, empfehlen wir Ihnen, unser Executive PG Program in Software Development with Specialization in Full Stack Development zu besuchen .

Was ist eine Hash-Tabelle?

Hash-Tabelle ist eine Container-Datenstruktur, die in der Computerprogrammierung weit verbreitet ist. Hash-Tabellen werden verwendet, um Schlüssel-Wert-Paare zu speichern, wobei der Schlüssel ein beliebiges Objekt sein kann. Als Container sollte eine Hash-Tabelle die Operationen des Einfügens und Entfernens unterstützen. Als Suchwerkzeug sollte eine Hash-Tabelle die Operation von get unterstützen. Wenn eine Hash-Tabelle eine Dictionary-Datenstruktur sein soll, sollte sie auch die Operation von contains unterstützen. Im Allgemeinen ist eine Hash-Tabelle also eine Datenstruktur, die häufig verwendet wird, um die Operationen Einfügen, Entfernen, Abrufen und Enthält effektiv zu implementieren. Die Hash-Tabelle ist wegen ihrer schnellen Leistung weit verbreitet.

Was ist Collections Framework in Java?

Java Collections Framework ist eine Reihe von Schnittstellen, Klassen und Algorithmen für die Java-Plattform. Es ist seit Version 1.2 Teil der Java-Plattform. Es enthält Schnittstellen für Container, Listen, Warteschlangen usw., aber auch Klassen zur Handhabung von Datums- und Zeitangaben, eine Klasse zur Handhabung regulärer Ausdrücke, eine weitere zur Handhabung der Internationalisierung und noch eine weitere zur Handhabung des Durchsuchens von Dateien.

Was ist die Beziehung zwischen einer Hashtabelle und einer Hashmap in Java?

Eine Hashtabelle ist eine spezielle Datenstruktur, die Schlüssel mit Werten verknüpft. Schlüssel können beliebige Objekte sein, aber alle Schlüssel in einer bestimmten Hashtabelle müssen miteinander vergleichbar sein (d. h. dieselben oder kompatible Schnittstellen verwenden). In Java ist eine Karte eine bestimmte Art von Hashtabelle, die mithilfe einer TreeMap implementiert wird. Die Schlüssel in einer Map müssen eine equals-Methode implementieren, und die Map verwendet diese Methode, um festzustellen, ob zwei Schlüssel gleich sind oder nicht. Das bedeutet, dass nur die Schlüssel in der Karte gespeichert werden und ihr zugehöriger Wert immer dann berechnet wird, wenn er benötigt wird.