Empfohlen, 2024

Tipp Der Redaktion

Unterschied zwischen HashMap und LinkedHashMap in Java

HashMap und LinkedHashMap sind Klassen, die einander ziemlich ähnlich sind und zum Erstellen einer Karte verwendet werden. Die HashMap-Klasse erweitert die AbstractMap-Klasse um eine Hashtabelle zum Speichern der Elemente in der Map. Die LinkedHashMap-Klasse verwaltet die Einträge in der Map anhand ihrer Einfügereihenfolge. Die Funktion, die HashMap und LinkedHashMap voneinander unterscheidet, besteht darin, dass Hashmap die Reihenfolge der gespeicherten Einträge in einer Map nicht beibehält. Andererseits verwendet LinkedHashMap eine hybride Datenstruktur, um die Reihenfolge der Einträge beizubehalten, in die sie eingefügt wurden. In der Vergleichstabelle unten habe ich einige andere Unterschiede zwischen HashMap und LinkedHashMap untersucht.

Vergleichstabelle

VergleichsgrundlageHashMapLinkedHashMap
BasicDie Reihenfolge der Einfügung in HashMap wird nicht beibehalten.Die Einfügereihenfolge wird in LinkedHashMap beibehalten.
DatenstrukturHashMap verwendet HashTable zum Speichern von Karten.LinkedHashMap verwendet HashTable zusammen mit der Linked List zum Speichern der Map.
Erweitert / implementiertHashMap erweitert AbstractMap und implementiert die Map-Schnittstelle.LinkedHashMap erweitert Hashmap.
AusführungHashMap wurde in JDK 2.0 eingeführt.LinkedHashMap wurde in JDK 4.0 eingeführt.
OverheadVergleichsweise weniger Aufwand.Vergleichsweise mehr Aufwand, da die Reihenfolge der Map-Einträge beibehalten werden muss.

Definition von HashMap

HashMap ist eine Klasse, die zum Erstellen einer Karte verwendet wird. Es implementiert Map Interface. Außerdem wird die AbstractMap- Klasse erweitert, sodass eine Hashtabelle zum Speichern der Einträge in der Map verwendet werden kann. Die Einträge der Karte sind ein Paar, bei dem jeder Schlüssel dem Wert zugeordnet ist. Der Schlüssel im Eintrag wird zum Abrufen des Werts verwendet. Daher muss der Schlüssel eindeutig sein. Aus diesem Grund sind doppelte Schlüssel in der HashMap nicht zulässig. Der Schlüssel in jedem Eintrag der Karte kann jedoch einen anderen Typ haben, dh die Schlüssel in der von HashMap erstellten Karte können heterogen sein. Die Datenstruktur, die von der HashMap zum Speichern einer Karte verwendet wird, ist eine Hashtabelle.

Die Einfügungsreihenfolge der Einträge in der HashMap wird nicht beibehalten. Das Einfügen von Einträgen in die mit HashMap erstellte Karte basiert auf dem Hash-Code, der von den Schlüsseln in Einträgen berechnet wird. Wenn Sie versehentlich einen doppelten Schlüssel in die HashMap eingegeben haben, wird der vorherige Wert dieses Schlüssels durch den neuen vorgeschlagenen Wert ersetzt und der alte Wert zurückgegeben. Wenn kein doppelter Schlüssel verwendet wird und keine Ersetzung stattgefunden hat, gibt der Schlüssel immer Null zurück. Im folgenden Beispiel sehen Sie, wie Sie die Einträge zur Hash-Map hinzufügen.

 Hashmap hm = new Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.println (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} 

Wie im obigen Code zu sehen ist, habe ich ein Objekt von HashMap erstellt und die Einträge mit der put-Methode hinzugefügt. Wenn ich das HashMap-Objekt druckte, werden die Einträge nicht in der Reihenfolge gedruckt, in der sie eingefügt wurden. Daher können Sie nicht vorgeben, dass die Reihenfolge der Einträge in der HashMap zurückgegeben wird. HashMap verwendet alle Methoden der Map-Schnittstelle und der AbstractMap-Klasse und führt keine neue Methode ein. Es hat seine eigenen Konstrukteure. Die Standardkapazität der Hash-Map ist 16 und der Standardfüllungsgrad ist 0, 75 .

Definition von LinkedHashMap

LinkedHashMap ist auch eine Klasse, die zum Erstellen einer Karte verwendet wird. LinkedHashMap erweitert die HashMap- Klasse und wurde später in JMK Version 4.0 in HashMap eingeführt. Als untergeordnete Klasse der HashMap-Klasse ist LinkedHashMap genau die gleiche wie die HashMap-Klasse einschließlich der Konstruktoren und Methoden. LinkedHashMap unterscheidet sich jedoch dahingehend, dass die Reihenfolge beim Einfügen der Einträge in die Map beibehalten wird. Die Datenstruktur, die von LinkedHashMap zum Speichern der Map verwendet wird, ist eine verknüpfte Liste und Hash-Tabelle .

LinkedHashMap führt zusätzlich zu den von HashMap vererbten Methoden eine neue Methode ein, die removeEldestEntry () ist . Mit dieser Methode wird der älteste Eintrag in der Karte entfernt. Die Standardkapazität von LinkedHashMap ist 16 und der Standardfüllungsgrad ist 0, 75, was ebenfalls der HashMap-Klasse ähnelt.

Hauptunterschiede zwischen HashMap und LinkedHashMap in Java

  1. Der wichtigste Unterschied besteht darin, dass die Einfügungsreihenfolge der HashMap nicht beibehalten wird, während die Einfügungsreihenfolge der LinkedHashMap beibehalten wird .
  2. Die von HashMap zum Speichern der Elemente der Map verwendete Datenstruktur ist Hashtable . Die Datenstruktur, die von LinkedHashMap verwendet wird, ist dagegen Linked List und Hashtable .
  3. Die HashMap-Klasse erweitert die AbstractMap- Klasse und implementiert die Map- Schnittstelle. Die LinkedHashMap-Klasse ist jedoch eine untergeordnete Klasse der HashMap- Klasse, dh die LinkedHashMap-Klasse erweitert die HashMap-Klasse.
  4. Die HashMap-Klasse wurde in der JDK 2.0- Version eingeführt. Die LinkedHashMap-Klasse wurde später in der JDK 4.0- Version eingeführt.
  5. Die vergleichbare LinkedHashMap-Klasse hat mehr Aufwand als HashMap, da sie die Reihenfolge der in der Map eingefügten Elemente beibehalten muss.

Fazit:

LinkedHashMap darf nur verwendet werden, wenn die Reihenfolge der in die Karte eingefügten Elemente betroffen ist.

Top