Java HashMap Und TreeMap Beides sind die Klassen des Java Collections-Frameworks. Die Java Map-Implementierung fungiert normalerweise als Bucket-Hash-Tabelle. Wenn Eimer zu groß werden, werden sie in Knoten umgewandelt TreeNodes , jeweils ähnlich aufgebaut wie die in java.util.TreeMap .
HashMap
HashMap implementiert Karte, klonbar Und Serialisierbar Schnittstelle. Es erstreckt sich AbstractMap Klasse. Es gehört java.util Paket.
- HashMap enthält einen Wert basierend auf dem Schlüssel.
- Es kann einen einzelnen Nullschlüssel und mehrere Nullwerte haben.
- HashMap behält während der Iteration keine Reihenfolge bei.
- Es enthält einzigartige Elemente.
- Es funktioniert nach dem Prinzip des Hashings.
TreeMap
Die TreeMap-Klasse wird erweitert AbstractMap Klasse und implementiert Navigierbare Karte , Klonbar , Und Serialisierbar Schnittstelle. TreeMap ist ein Beispiel für eine SortedMap . Es wird durch den Rot-Schwarz-Baum implementiert, was bedeutet, dass die Reihenfolge der Schlüssel sortiert ist.
- TreeMap enthält auch Werte basierend auf dem Schlüssel.
- TreeMap ist nach Schlüsseln sortiert.
- Es enthält einzigartige Elemente.
- Es kann keinen Nullschlüssel, aber mehrere Nullwerte haben.
- Die Schlüssel sind in aufsteigender Reihenfolge.
- Es speichert das Objekt in der Baumstruktur.
Ähnlichkeiten zwischen HashMap und TreeMap
- Beide Klassen verlängern sich AbstractMap Klasse.
- Eine Karte ist ein Objekt, das speichert Schlüsselwert Paare. Im Schlüssel-Wert-Paar ist jeder Schlüssel eindeutig, ihre Werte können es jedoch sein Duplikat .
- Beide Klassen repräsentieren die Zuordnung von Schlüssel Zu Werte .
- Beide Karten sind es nicht synchronisiert .
- Kartennutzung setzen() Methode zum Hinzufügen eines Elements zur Karte.
- Der Iterator wirft a ConcurrentModificationException wenn die Karte in irgendeiner Weise geändert wird.
Der Hauptunterschied zwischen HashMap und TreeMap ist:
HashMap behält die Iterationsreihenfolge nicht bei, während die TreeMap Behalten Sie die Reihenfolge bei, indem Sie die verwenden vergleichen mit() Methode oder a Komparator im Konstruktor der TreeMap festgelegt.
In der folgenden Tabelle werden die Unterschiede zwischen HashMap und TreeMap beschrieben.
Basis | HashMap | TreeMap |
---|---|---|
Definition | Java HashMap ist eine Hashtabellen-basierte Implementierung der Map-Schnittstelle. | Java TreeMap ist eine auf Baumstruktur basierende Implementierung der Map-Schnittstelle. |
Schnittstellenimplementierungen | HashMap implementiert Karte, klonbar , Und Serialisierbar Schnittstelle. | TreeMap implementiert NavigableMap, klonbar , Und Serialisierbar Schnittstelle. |
Nullschlüssel/-werte | HashMap ermöglicht a einzel Nullschlüssel und mehrere Nullwerte. | TreeMap erlaubt dies nicht Null Schlüssel, kann aber haben mehrere Nullwerte. |
Homogen heterogen | HashMap lässt heterogene Elemente zu, da keine Sortierung nach Schlüsseln durchgeführt wird. | TreeMap erlaubt aufgrund der Sortierung homogene Werte als Schlüssel. |
Leistung | HashMap ist Schneller als TreeMap, da es eine konstante Zeitleistung von O(1) für Grundoperationen wie get() und put() bietet. | TreeMap ist langsam im Vergleich zu HashMap, da es die Leistung von O(log(n)) für die meisten Operationen wie add(), remove() und contains() bietet. |
Datenstruktur | Die HashMap-Klasse verwendet die Hash-tabelle . | TreeMap verwendet intern a Rot schwarz Baum, der ein selbstausgleichender binärer Suchbaum ist. |
Vergleichsmethode | Es benutzt gleich() Methode der Objekt Klasse zum Vergleichen von Schlüsseln. Die Methode equal() der Map-Klasse überschreibt sie. | Es nutzt die vergleichen mit() Methode zum Vergleichen von Schlüsseln. |
Funktionalität | Die HashMap-Klasse enthält nur Grundfunktionen wie get(), put(), KeySet() , usw. . | Die TreeMap-Klasse ist reich an Funktionalität, da sie Funktionen enthält wie: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() . |
Reihenfolge der Elemente | HashMap behält keine Reihenfolge bei. | Die Elemente werden einsortiert natürliche Reihenfolge (aufsteigend). |
Verwendet | Die HashMap sollte verwendet werden, wenn wir kein Schlüssel-Wert-Paar in sortierter Reihenfolge benötigen. | Die TreeMap sollte verwendet werden, wenn wir Schlüssel-Wert-Paare in sortierter (aufsteigender) Reihenfolge benötigen. |
Beispiel für HashMap vs. TreeMap
Im folgenden Beispiel können wir beobachten, dass die Elemente der HashMap in zufälliger Reihenfolge angeordnet sind, während die Elemente der TreeMap in aufsteigender Reihenfolge angeordnet sind.
import java.util.Map; import java.util.HashMap; import java.util.TreeMap; public class HashMapVsTreeMapExample { public static void main(String args[]) { /*------------HashMap implementation----------------*/ Map hm=new HashMap(); //adding elements to the HashMap hm.put(9, 'Red'); hm.put(12, 'Black'); hm.put(6, 'Green'); hm.put(19, 'White'); System.out.println('HashMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: hm.entrySet()) { //getting keys and values using method System.out.println(entry.getKey() + ' = ' +entry.getValue()); } /*------------TreeMap implementation----------------*/ Map tm=new TreeMap(); //adding elements to the TreeMap tm.put(9, 'Red'); tm.put(12, 'Black'); tm.put(6, 'Green'); tm.put(19, 'White'); System.out.println('TreeMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: tm.entrySet()) { //getting keys and values using method //prints list in sorted order System.out.println(entry.getKey() + ' = ' +entry.getValue()); } } }
Ausgabe: