Unterschied zwischen HashMap und LinkedHashMap in Java

Autor: Laura McKinney
Erstelldatum: 2 April 2021
Aktualisierungsdatum: 10 Kann 2024
Anonim
HashMap, LinkedHashMap and TreeMap in Java
Video: HashMap, LinkedHashMap and TreeMap in Java

Inhalt


HashMap und LinkedHashMap sind die Klassen, die einander sehr ähnlich sind und zum Erstellen einer Karte verwendet werden. Die HashMap-Klasse erweitert die AbstractMap-Klasse, um eine Hash-Tabelle zum Speichern der Elemente in der Karte zu verwenden. Die LinkedHashMap-Klasse verwaltet die Einträge in der Map in der Reihenfolge ihrer Einfügung. Das Merkmal, das HashMap und LinkedHashMap voneinander unterscheidet, ist das Hashmap behält die Reihenfolge der gespeicherten Einträge in einer Karte nicht bei. Auf der anderen Seite, LinkedHashMap verwendet eine hybride Datenstruktur, um die Reihenfolge der Einträge beizubehalten, in der sie eingefügt wurden. In der folgenden Vergleichstabelle habe ich einige andere Unterschiede zwischen HashMap und LinkedHashMap untersucht.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Grundlage für den VergleichHashMapLinkedHashMap
BasicDie Einfügereihenfolge in HashMap wird nicht beibehalten.Die Einfügereihenfolge wird in LinkedHashMap beibehalten.
DatenstrukturHashMap verwendet HashTable zum Speichern von Karten.LinkedHashMap verwendet HashTable zusammen mit Linked List zum Speichern der Karte.
Erweitert / implementiertHashMap erweitert AbstractMap und implementiert die Kartenschnittstelle.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 Karteneinträge eingehalten werden muss.


Definition von HashMap

HashMap ist eine Klasse, die zum Erstellen einer Karte verwendet wird. Es implementiert Karte Schnittstelle. Es erweitert auch die AbstractMap Klasse, so dass es eine Hash-Tabelle verwenden kann, um die Einträge in der Karte zu speichern. Einträge der Map sind a 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 in der HashMap keine doppelten Schlüssel zulässig. Der Schlüssel in jedem Eintrag der Karte kann jedoch einen anderen Typ haben, d. H. Die von HashMap erstellten Schlüssel in der Karte können heterogen sein. Die von der HashMap zum Speichern einer Karte verwendete Datenstruktur ist eine Hash-Tabelle.

Die Einfügereihenfolge der Einträge in der HashMap bleibt nicht erhalten. Das Einfügen von Einträgen in die mit HashMap erstellte Karte basiert auf dem Hash-Code, der durch die Schlüssel 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 kein Ersatz stattgefunden hat, gibt der Schlüssel immer Null zurück. Lassen Sie uns anhand des folgenden Beispiels sehen, 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.ln (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200}

Wie im obigen Code ist zu sehen, dass ich ein Objekt von HashMap erstellt und die Einträge mit der Methode puts hinzugefügt habe. Wenn ich das HashMap-Objekt bearbeitet habe, werden die Einträge nicht in der Reihenfolge bearbeitet, in der sie eingefügt wurden. Daher können Sie nicht so tun, als würde die Reihenfolge der Einträge in der HashMap zurückkehren. HashMap verwendet alle Methoden der Map-Schnittstelle und der AbstractMap-Klasse und führt keine neue Methode ein. Es hat seine eigenen Konstruktoren. Die Standardkapazität der Hash-Map ist 16 und Standardfüllverhältnis ist 0.75.

Definition von LinkedHashMap

LinkedHashMap ist auch eine Klassenverwendung zum Erstellen einer Karte. LinkedHashMap erweitert die HashMap Klasse und wurde später in HashMap in JDK Version 4.0 eingeführt. Die untergeordnete Klasse der HashMap-Klasse LinkedHashMap ist identisch mit der HashMap-Klasse, einschließlich der Konstruktoren und Methoden. LinkedHashMap unterscheidet sich jedoch dahingehend, dass die Reihenfolge des Einfügens der Einträge in die Map beibehalten wird. Die Datenstruktur, die von LinkedHashMap zum Speichern der Karte verwendet wird, lautet verknüpfte Liste und Hash-tabelle.

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

  1. Der wichtigste Unterschied ist, dass die Einfügereihenfolge der HashMap ist nicht erhalten Die Einfügereihenfolge der LinkedHashMap ist konserviert.
  2. Die von HashMap zum Speichern der Elemente der Karte verwendete Datenstruktur lautet Hash-tabelle. Andererseits ist die von der LinkedHashMap verwendete Datenstruktur Verknüpfte Liste und Hash-tabelle.
  3. Die HashMap-Klasse wird erweitert AbstractMap Klasse und implementiert die Karte Schnittstelle. Die LinkedHashMap-Klasse ist jedoch eine untergeordnete Klasse von HashMap Klasse, d. h. LinkedHashMap-Klasse, erweitert die HashMap-Klasse.
  4. HashMap-Klasse wurde in der eingeführt JDK 2.0 Ausführung. Die LinkedHashMap-Klasse wurde später in eingeführt JDK 4.0 Ausführung.
  5. Die Klasse LinkedHashMap hat vergleichsweise mehr Aufwand als HashMap, da die Reihenfolge der in die Karte eingefügten Elemente beibehalten werden muss.

Fazit:

LinkedHashMap darf nur verwendet werden, wenn es um die Reihenfolge der in die Karte eingefügten Elemente geht.