Unterschied zwischen HashMap und 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.
- Vergleichstabelle
- Definition
- Hauptunterschiede
- Fazit
Vergleichstabelle
Grundlage für den Vergleich | HashMap | TreeMap |
---|---|---|
Basic | HashMap behält die Einfügereihenfolge nicht bei. | TreeMap behält die Einfügereihenfolge bei. |
Datenstruktur | HashMap 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 implementiert | HashMap erweitert die AbstractMap-Klasse und implementiert die Map-Schnittstelle. | TreeMap erweitert die AbstractMap-Klasse und implementiert die SortedMap- und NavigableMap-Schnittstelle. |
Performance | HashMap 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 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. 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.
Fazit: