Unterschied zwischen HashMap und TreeMap in Java

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

Inhalt


HashMap und TreeMap sind die Map-Klassen und implementieren beide die Map-Schnittstelle. Map ist ein Objekt, das Schlüssel-Wert-Paare speichert, wobei jeder Schlüssel eindeutig ist und es möglicherweise doppelte Werte gibt. Die HashMap-Klasse verwendet die Hash-Tabelle als Datenstruktur. Die TreeMap verwendet den rot-schwarzen Baum als Datenstruktur. Der Hauptunterschied zwischen HashMap und Treemap besteht darin, dass die HashMap behält die Einfügereihenfolge nicht bei, wohingegen die Treemap tut.

Beginnen wir also unsere Diskussion über die Unterschiede zwischen HashMap und TreeMap mit Hilfe der unten gezeigten Vergleichstabelle.

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

Vergleichstabelle

Grundlage für den VergleichHashMapTreeMap
Basic HashMap behält die Einfügereihenfolge nicht bei.TreeMap behält die Einfügereihenfolge bei.
DatenstrukturHashMap verwendet Hash Table als zugrunde liegende Datenstruktur.TreeMap verwendet Red-Black Tree als zugrunde liegende Datenstruktur.
NULL-Schlüssel und -Werte Mit HashMap kann ein Nullschlüssel einmal und ein Nullwert beliebig oft eingegeben werden.TreeMap erlaubt keinen Null-Schlüssel, aber Null-Werte können beliebig oft eingegeben werden.
Erweitert und implementiertHashMap erweitert die AbstractMap-Klasse und implementiert die Map-Schnittstelle.TreeMap erweitert die AbstractMap-Klasse und implementiert die SortedMap- und NavigableMap-Schnittstelle.
PerformanceHashMap arbeitet schneller.TreeMap arbeitet im Vergleich zu HashMap langsamer.


Definition von HashMap

HashMap ist eine Map-Klasse. Es nutzt die Hash-tabelle, als Datenstruktur zum Speichern des Kartenschlüsselwertpaares. Das Einfügen des Schlüssel-Wert-Paares erfolgt mit Hash-Code des Schlüssel. Daher muss jeder Schlüssel in der Karte eindeutig sein, da er zum Abrufen der Werte verwendet wird.

Die Einfügereihenfolge in HashMap ist nicht Beibehalten, was bedeutet, dass das Hashmap-Objekt die Elemente nicht in der Reihenfolge zurückgibt, in der sie eingefügt wurden. Andererseits ist die Reihenfolge, in der die Elemente zurückgegeben werden, nicht festgelegt.

Das Schlüssel darf sein NULL auf einmal, aber die Werte kann sein NULL jederzeit. Die HashMap kann die heterogen Objekte für Schlüssel sowie Werte.


Es gibt vier Konstruktoren von HashMap:

HashMap () HashMap (Map m) HashMap (int capacity), HashMap (int capacity, float fillRatio)

Das zuerst Konstruktor erstellt das leere Objekt von HashMap. Das zweite Der Konstruktor initialisiert die HashMap mit Elementen von Map m. Das dritte Der Konstruktor initialisiert die HashMap mit der im Argument angegebenen Kapazität. Das vierte Der Konstruktor initialisiert die Kapazität sowie den Füllgrad des HashMap-Objekts.

Der Standard Kapazität der HashMap ist 16und die Standardeinstellung Füllverhältnis der HashMap ist 0.75.

Definition von TreeMap

Wie HashMap, TreeMap ist auch eine Map-Klasse. TreeMap wird erweitert AbstractMap Klasse und Geräte NavigabelMap und SortedMap. Die TreeMap-Objekte speichern die Kartenelemente in der Baumstruktur. Die zum Speichern der Karte verwendete Datenstruktur ist die Rot-schwarzer Baum.

Die TreeMap speichert das Schlüsselwertpaar in der sortierten Reihenfolge, was das schnelle Abrufen der Elemente erleichtert. Das TreeMap-Objekt gibt die Elemente in der zurück sortiert (aufsteigend) bestellen.

Es gibt vier Konstruktoren von TreeMap:

TreeMap () TreeMap (Komparator <? Super K> comp) TreeMap (Map <? Erweitert K,? Erweitert V> m) TreeMap (SortedMap sm)

Das zuerst Konstruktoren erstellen ein leeres Objekt von TreeMap, dessen Schlüssel in natürlicher Reihenfolge sortiert werden. Das zweite Der Konstruktor erstellt eine leere Baumstruktur, die nach dem sortiert wird Vergleicher cmp. Das dritte Der obige Konstruktor erstellt eine Baumkarte, die mit den Einträgen von initialisiert wird Karte m. Das vierte Der Konstruktor erstellt eine Baumkarte, die mit den Einträgen von initialisiert wird SortedMap sm.

Treemap verfügt nicht über eine eigene neue Methode, sondern verwendet die Methode der Schnittstelle NavigableMap und SortedMap sowie die AbstractMap-Klasse.

  1. Beide Klassen werden zum Erstellen von Kartenobjekten verwendet. Der grundlegende Unterschied zwischen HashMap und Treemap besteht jedoch darin, dass HashMap die Einfügereihenfolge nicht beibehält, während dies bei der Treemap der Fall ist.
  2. Die von Hashmap zum Speichern von Kartenelementen verwendete Datenstruktur ist die Hash-Tabelle, und die von TreeMap zum Speichern der Kartenelemente verwendete Datenstruktur ist der rot-schwarze Baum.
  3. Sowohl die Klassen Hashmap als auch Treemap erweitern die AbstractMap-Klasse, aber die HashMap-Klasse implementiert die Map-Schnittstelle und die TreeMap-Klasse implementiert die NavigableMap- und SortedMap-Schnittstelle.
  4. Die Werte können in beiden Fällen beliebig oft Null sein, aber der Schlüssel darf in HashMap nur einmal Null sein, und ein Schlüssel darf sich niemals in Treemap befinden.
  5. Die Leistung von HashMap ist schneller. Es wird keine Zeit für das Sortieren der Kartenelemente verschwendet, wie dies bei TreeMap der Fall ist. Daher ist TreeMap langsamer als HashMap.

Fazit:

TreeMap sollte nur verwendet werden, wenn Sie ein Schlüsselwertpaar in sortierter Form benötigen. Als Sortierung fallen Leistungskosten an. Die nicht synchronisierte HashMap arbeitet schneller.