treemap java tutorial with java treemap examples
In diesem Java TreeMap-Lernprogramm werden TreeMap-Klasse, Iteration, TreeMap-Beispiele, Implementierung, Java Hashmap vs Treemap, TreeMap-API-Methoden usw. erläutert.
Eine TreeMap-Datenstruktur ist eine Sammlung, in der Schlüssel-Wert-Paare in einer natürlich sortierten Reihenfolge gespeichert werden. Eine TreeMap ist Teil des Java Collections Framework und eine Kartenimplementierung.
=> Überprüfen Sie ALLE Java-Tutorials hier.
Was du lernen wirst:
Java TreeMap
Einige der Hauptmerkmale von TreeMap in Java sind folgende:
- Die TreeMap-Klasse, die Treemap in Java implementiert, ist Teil des Pakets java.util. Es implementiert die Map-Schnittstelle.
- Die TreeMap-Klasse erweitert die AbstractMap-Klasse und implementiert auch die NavigableMap- und SortedMap-Schnittstelle (indirekt).
- TreeMap ist nicht synchronisiert.
- Standardmäßig sind TreeMap-Elemente standardmäßig in aufsteigender Reihenfolge.
- TreeMap erlaubt keine doppelten Elemente.
- TreeMap erlaubt Nullwerte, aber keine Nullschlüssel.
Das folgende Diagramm zeigt die Klassenhierarchie für die TreeMap-Klasse.
Wie bereits erwähnt, implementiert die TreeMap-Klasse eine NavigableMap-Schnittstelle, die wiederum die SortedMap-Klasse erweitert. SortedMap erbt weiterhin die Kartenschnittstelle.
Deklaration der TreeMap-Klasse
Die allgemeine Deklaration der TreeMap-Klasse ist unten angegeben:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
Dabei ist K => Schlüsseltyp, der von TreeMap verwaltet wird
V => Typ der zugeordneten Werte
TreeMap-Beispiel
Das folgende Programm zeigt ein einfaches Beispiel für eine TreeMap-Datenstruktur.
import java.util.*; class Main{ public static void main(String args()){ //declare a TreeMap and initialize it TreeMap cities_map=new TreeMap (); cities_map.put(100,'Pune'); cities_map.put(102,'Jaipur'); cities_map.put(101,'Hyderabad'); cities_map.put(103,'Bangaluru'); //print the TreeMap contents using forEach System.out.println('Contents of TreeMap:'); System.out.print('{'); for(Map.Entry entries:cities_map.entrySet()){ System.out.print(entries.getKey()+' = '+entries.getValue() + ' '); } System.out.println('}'); } }
Ausgabe:
Inhalt von TreeMap:
{100 = Pune 101 = Hyderabad 102 = Jaipur 103 = Bangaluru}
In diesem Programm haben wir ein einfaches TreeMap-Objekt mit dem Namen 'city_map' definiert und es dann mit der put-Methode auf Schlüssel-Wert-Paare initialisiert.
Dann verwenden wir die entrySet () -Methode der TreeMap-Klasse und durchlaufen diese Menge mit einer forEach-Schleife, um die Schlüssel-Wert-Paare zu drucken. Zum Drucken von Schlüssel-Wert-Paaren verwenden wir die Methoden getKey () bzw. getValue ().
Welcher der folgenden Pfade führt zur Schaltfläche "Screenshot machen"?
TreeMap-API-Methoden und -Konstruktoren
In diesem Abschnitt werden die verschiedenen Konstruktoren und Methoden erläutert, die von der TreeMap-Klasse bereitgestellt werden.
Konstruktoren
Konstruktor-Prototyp | Beschreibung | |
---|---|---|
descendingMap | NavigableMap descendingMap () | Gibt angegebene Schlüssel-Wert-Paare in umgekehrter Reihenfolge zurück. |
TreeMap () | Standardkonstruktor zum Erstellen einer leeren TreeMap mit natürlicher Reihenfolge. | |
TreeMap (Komparator Komparator) | Erstellt eine leere TreeMap, die nach dem angegebenen Komparator sortiert ist. | |
Baumkarte (Karte m) | Erstellt eine TreeMap und initialisiert sie mit den Elementen der angegebenen Map, m. Bestellung ist natürlich. | |
TreeMap (SortedMap m) | Erstellt eine TreeMap und initialisiert sie mit SortedMap-Einträgen. Die Bestellung entspricht der sortierten Karte. |
Methoden
Methode | Methodenprototyp | Beschreibung |
---|---|---|
Deckeneintritt | Map.Entry DeckeEintrag (K-Taste) | Gibt das kleinste Schlüssel-Wert-Paar zurück, sodass der Schlüssel größer oder gleich dem angegebenen Schlüssel ist. null, wenn kein Schlüssel vorhanden ist |
Deckenschlüssel | K DeckeTaste (K-Taste) | Gibt den Schlüssel zurück, der am kleinsten und am größten als der angegebene Schlüssel ist. Gibt null zurück, wenn kein Schlüssel vorhanden ist. |
klar | void clear () | Löscht alle Schlüssel-Wert-Paare aus der Treemap. |
Klon | Objektklon () | Erstellt eine flache Kopie der TreeMap-Instanz. |
Komparator | Komparator Komparator () | Gibt einen Komparator zurück, der zum Anordnen der Schlüssel verwendet wird. null, wenn die Bestellung natürlich ist |
descendingKeySet | NavigableSet descendingKeySet () | Gibt die NavigableSet-Ansicht der TreeMap-Schlüssel in umgekehrter Reihenfolge zurück. |
Erster Eingang | Map.Entry firstEntry () | Gibt das kleinste Schlüssel-Wert-Paar zurück. |
Bodeneintritt | Map.Entry floorEntry (K-Taste) | Gibt den größten Schlüssel zurück, der kleiner oder gleich einem bestimmten Schlüssel ist. null, wenn kein solcher Schlüssel vorhanden ist |
für jedes | void forEach (BiConsumer-Aktion) | Die angegebene Aktion wird für jeden Eintrag in der TreeMap ausgeführt. |
headMap | SortedMap headMap (K toKey) | Wird verwendet, um ein Schlüssel-Wert-Paar zurückzugeben, sodass der zurückgegebene Schlüssel streng kleiner als toKey ist |
headMap | NavigableMap headMap (K toKey, einschließlich Boolescher Wert) | Gibt Schlüssel-Wert-Paare der Schlüssel zurück, die kleiner als der toKey oder gleich if sind. |
höherer Eintrag | Map.Entry highEntry (K-Taste) | Gibt den kleinsten Schlüssel oder null zurück. Der zurückgegebene Schlüssel ist streng größer als der angegebene Schlüssel. |
höherer Schlüssel | K höherKey (K-Taste) | Gibt den Schlüssel zurück, wenn die Zuordnung für den angegebenen Schlüssel in der Treemap vorhanden ist. |
Schlüsselsatz | Setze keySet () | Gibt die festgelegte Sammlung der Schlüssel in der TreeMap zurück. |
letzter Eintrag | Map.Entry lastEntry () | Gibt das Schlüssel-Wert-Paar so zurück, dass der Schlüssel der größte Schlüssel ist. Gibt null zurück, wenn der Schlüssel nicht vorhanden ist. |
LowerEntry | Map.Entry lowerEntry (K-Taste) | Gibt das Schlüssel-Wert-Paar so zurück, dass der Schlüssel am größten und streng kleiner als der angegebene Schlüssel ist. Gibt null zurück, wenn der Schlüssel nicht vorhanden ist. |
LowerKey | K lowerKey (K-Taste) | Gibt den größten Schlüssel oder null zurück. Der zurückgegebene Schlüssel ist streng kleiner als der angegebene Schlüssel. |
navigableKeySet | NavigableSet navigableKeySet () | Gibt das 'NavigableSet' der Schlüssel in der TreeMap zurück. |
pollFirstEntry | Map.Entry pollFirstEntry () | Entfernt das Schlüssel-Wert-Paar des kleinsten Schlüssels und gibt es zurück. |
pollLastEntry | Map.Entry pollLastEntry () | Entfernt das Schlüssel-Wert-Paar des größten Schlüssels und gibt es zurück. |
stellen | V put (K-Taste, V-Wert) | Fügt der TreeMap den angegebenen Schlüssel und Wert hinzu. |
putAll | void putAll (Kartenkarte) | Alle Schlüssel-Wert-Paare aus der angegebenen Karte werden in die TreeMap kopiert. |
ersetzen | V ersetzen (K-Taste, V-Wert) | Ersetzt oder ändert den Wert des angegebenen Schlüssels durch den angegebenen Wert. |
ersetzen | Boolescher Ersatz (K-Taste, V oldValue, V newValue) | Ersetzt oldValue des angegebenen Schlüssels durch newValue. |
alles ersetzen | void replaceAll (BiFunction-Funktion) | Ruft die angegebene Funktion auf und ersetzt alle Einträge durch das Ergebnis der Funktion. |
Unterkarte | NavigableMap subMap (K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | Gibt die Schlüssel-Wert-Schlüsselpaare von 'fromKey' bis 'toKey' zurück. |
SortedMap | SortedMap-Subkarte (K fromKey, K toKey) | Gibt Schlüssel-Wert-Paare für den Bereich von Schlüssel (einschließlich) bis Schlüssel (exklusiv) zurück. |
tailMap | SortedMap tailMap (K fromKey) | Gibt Schlüssel-Wert-Paare zurück, sodass die Schlüssel größer oder gleich fromKey sind. |
tailMap | NavigableMap tailMap (K fromKey, einschließlich Boolescher Wert) | Gibt Schlüssel-Wert-Paare für die Schlüssel zurück, die gleich fromKey (einschließlich = true) oder größer als fromKey sind. |
enthältKey | Boolescher Wert enthält Schlüssel (Objektschlüssel) | Überprüft, ob in der Treemap eine Zuordnung für den angegebenen Schlüssel vorhanden ist. Gibt true zurück, wenn ja. |
enthältWert | Boolescher Wert enthältWert (Objektwert) | Überprüft, ob dem angegebenen Wert ein Schlüssel zugeordnet ist. Gibt yes zurück, wenn true. |
firstKey | K firstKey () | Gibt den niedrigsten oder den ersten Schlüssel in der sortierten Karte zurück |
erhalten | V get (Objektschlüssel) | Ruft den dem angegebenen Schlüssel zugeordneten Wert ab |
lastKey | K lastKey () | Gibt den letzten oder höchsten Schlüssel in der sortierten Karte zurück. |
entfernen | V entfernen (Objektschlüssel) | Löscht das Schlüssel-Wert-Paar für den angegebenen Schlüssel in der TreeMap |
entrySet | einstellen | Gibt den Satz für die angegebene TreeMap zurück. |
Größe | int size () | Gibt die Größe oder die Gesamtzahl der Schlüssel-Wert-Paare in der TreeMap zurück. |
Werte | Sammlungswerte () | Gibt die Sammlung der Werte für die TreeMap zurück. |
Durch TreeMap iterieren
TreeMap besteht aus Schlüssel-Wert-Paaren. Die TreeMap-Klasse bietet eine Methode 'entrySet', die Schlüssel-Wert-Paare in der Map zurückgibt. Wir können diese Einträge mit der forEach-Schleife durchlaufen und Schlüssel und Werte mit den Methoden getKey () bzw. getValue () anzeigen.
Dies wird im folgenden Java-Programm gezeigt:
import java.util.Map; import java.util.TreeMap; class Main { public static void main(String() arg){ //declare and initialize TreeMap Map colorsTree = new TreeMap(); colorsTree.put('R', 'Red'); colorsTree.put('G', 'Green'); colorsTree.put('B', 'Blue'); colorsTree.put('M', 'Magenta'); System.out.println('The contents of TreeMap:'); // retrieve set of map entries using entrySet method for (Map.Entry Map_entry : colorsTree.entrySet()) //print key-value pairs using getKey() and getValue() System.out.println( '(' + Map_entry.getKey() + '=>' + Map_entry.getValue() + ')'); } }
Ausgabe:
Der Inhalt von TreeMap:
(B => Blau)
(G => Grün)
(M => Magenta)
(R => Rot)
TreeMap-Implementierung in Java
Das folgende Java-Programm demonstriert die oben beschriebene Hauptmethode der TreeMap-Klasse.
import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class Main { public static void main(String() args) { //declare a TreeMap Object and initialize it with values TreeMap map = new TreeMap<>(); for(int i=1;i<=10;i++) { map.put(i, (i*i)+''); } System.out.println('Original Map:' + map); //lowerEntry, higherEntry Entry entry = map.lowerEntry(4); System.out.println('Closest Lower Entry than 4:'+entry); entry = map.higherEntry(4); System.out.println('Closest Higher Entry than 4:'+entry); System.out.println('Closest Lower key than 4 :'+map.lowerKey(4)); entry = map.floorEntry(6); System.out.println('Closest floor entry than 6: '+entry); entry = map.ceilingEntry(6); System.out.println('Closest ceiling Entry than 6 :'+entry); entry = map.firstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.lastEntry(); System.out.println('TreeMap Last Entry:'+entry); Map reversedMap = map.descendingMap(); System.out.println('Reversed TreeMap: '+reversedMap); //pollFirstEntry, pollLastEntry entry = map.pollFirstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.pollLastEntry(); System.out.println('TreeMap Last Entry:'+entry); //subMap Map subMap = map.subMap(2, true, 6, true); System.out.println('Submap from 2 to 6: '+subMap); //headMap subMap = map.headMap(5, true); System.out.println('HeadMap: '+subMap); //tailMap subMap = map.tailMap(5, true); System.out.println('TailMap: '+subMap); } }
Ausgabe:
Originalkarte: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Niedrigster unterer Eintrag als 4: 3 = 9
Nächstgelegener höherer Eintrag als 4: 5 = 25
Nächste untere Taste als 4: 3
Nächster Etageneintritt als 6: 6 = 36
Nächste Decke Eintrag als 6: 6 = 36
TreeMap Erster Eintrag: 1 = 1
TreeMap Letzter Eintrag: 10 = 100
Umgekehrte Baumkarte: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
TreeMap Erster Eintrag: 1 = 1
TreeMap Letzter Eintrag: 10 = 100
Submap von 2 bis 6: {2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36}
HeadMap: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
TailMap: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}
Was ist das Testen der Benutzerakzeptanz beim Testen von Software?
Sortieren Sie TreeMap nach Wert
Standardmäßig wird TreeMap anhand der Schlüssel nach natürlicher Reihenfolge sortiert. Wenn wir die TreeMap jedoch nach den Werten sortieren möchten, müssen wir den Komparator verwenden, um die Sortierung zu definieren.
Das folgende Java-Programm sortiert die TreeMap nach Wert.
import java.util.*; class Main { //Method for sorting the TreeMap based on values public static > Map sortTreeMap(final Map map) { //define a comaprator to sort TreeMap on values Comparator valueComparator = new Comparator() { public int compare(K k1, K k2) { int compare = map.get(k1).compareTo(map.get(k2)); if (compare == 0) return 1; else return compare; } }; //use the comparator to sort the TreeMap and return sortedTreeMap Map sortedTreeMap = new TreeMap(valueComparator); sortedTreeMap.putAll(map); return sortedTreeMap; } public static void main(String args()) { //define and initialize the TreeMap TreeMap treemap = new TreeMap(); treemap.put('R', 'Red'); treemap.put('G', 'Green'); treemap.put('B', 'Blue'); treemap.put('C', 'Cyan'); treemap.put('M', 'Magenta'); // call method sortTreeMap to sort the TreeMap Map sortedTreeMap = sortTreeMap(treemap); // Retrieve set of the entries on the sorted map Set set = sortedTreeMap.entrySet(); System.out.println('The sorted TreeMap based on Values:'); // Now define iterator on this set Iterator i = set.iterator(); // Print TreeMap elements while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ': '); System.out.println(me.getValue()); } } }
Ausgabe:
Die sortierte TreeMap basierend auf Werten:
B: Blau
C: Cyan
G: Grün
M: Magenta
R: Rot
Java Hashmap vs Treemap
Sehen wir uns einige der Hauptunterschiede zwischen einer HashMap und einer TreeMap an.
Die folgende Tabelle zeigt diese Unterschiede.
HashMap | Baumkarte |
---|---|
HashMap ist viel schneller als TreeMap. | TreeMap ist langsamer |
Implementiert die Kartenschnittstelle. | Implementiert die NavigableMap-Schnittstelle. |
Verwendet die Hashing-Implementierungstechnik | Verwenden Sie für die Implementierung einen rot-schwarzen Baum |
Behält keine Reihenfolge der enthaltenen Elemente bei | Die Schlüssel in der Baumkarte sind bereits gemäß der natürlichen Reihenfolge bestellt |
Ermöglicht einen Nullschlüssel und viele Nullwerte | Erlaubt nur Nullwerte, aber Schlüssel dürfen nicht Null sein |
Führt grundlegende Operationen aus, setzt und erhält in konstanter Zeit. | Nehmen Sie sich log (n) Zeit, um Put- und Get-Operationen durchzuführen |
HashMap verfügt über eingeschränkte Funktionen. | Die TreeMap-Klasse bietet viele zusätzliche Funktionen, mit denen wir die Datenstruktur bearbeiten können. |
Verwendet die Methode equals () zum Vergleichen. | Verwendet die compareTo () -Methode zum Vergleichen. |
Häufig gestellte Fragen
F # 1) Was ist TreeMap in Java?
Antworten: TreeMap in Java ist eine Sammlung von Schlüssel-Wert-Paaren, die bereits sortiert sind. Für Implementierungszwecke wird ein rot-schwarzer Baum verwendet. Java TreeMap implementiert die NavigableMap-Schnittstelle neben der Map-Schnittstelle und erweitert auch die AbstractMap-Klasse.
Q # 2) Warum verwenden wir TreeMap in Java?
Antworten: Die TreeMap wird in Java zum Implementieren von Map- und NavigableMap-Schnittstellen sowie der AbstractMap-Klasse verwendet. Da die TreeMap-Schlüssel gemäß der natürlichen Reihenfolge sortiert sind, können wir diese Datenstruktur zum Speichern von Verzeichnisstrukturen, Baumhierarchien usw. verwenden.
Q # 3) Was ist besser - HashMap oder TreeMap?
Antworten: HashMap ist besser als TreeMap. HashMap benötigt immer konstante Zeit, um grundlegende Operationen auszuführen, während TreeMap log (n) Zeit benötigt, um diese Operationen auszuführen. Wenn größere Datenobjekte betroffen sind, ist HashMap im Vergleich zu TreeMap schneller.
Q # 4) Ist TreeMap sortiert?
Antworten: Ja, die Schlüsseleinträge in TreeMap sind nach natürlicher Reihenfolge sortiert. Mit der TreeMap-Klasse können wir auch einen benutzerdefinierten Komparator verwenden, um die TreeMap anhand von Werten zu sortieren.
Q # 5) Ist TreeMap threadsicher?
Antworten: Nein, TreeMap ist keine thread-sichere Sammlung.
Fazit
In diesem Tutorial haben wir TreeMap in Java ausführlich besprochen. TreeMap ist eine Sammlung von Schlüssel-Wert-Paaren, die die Kartenschnittstelle implementiert. Es implementiert auch eine NavigableMap-Schnittstelle. Die Elemente der TreeMap sind eindeutig und es sind keine Duplikate zulässig.
Wir haben die Konstruktoren und Methoden von TreeMap gesehen. Wir haben auch das TreeMap-Programm implementiert und die wichtigsten Methoden der TreeMap-Klasse demonstriert. Dann haben wir die Unterschiede zwischen HashMap und TreeMap besprochen.
=> Besuchen Sie hier, um die Java-Schulungsreihe für alle zu sehen.
Literatur-Empfehlungen
- TreeSet In Java: Tutorial mit Programmierbeispielen
- Binärer Suchbaum in Java - Implementierungs- und Codebeispiele
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials
- Java String enthält () Method Tutorial mit Beispielen
- Was ist Java Vector? Java Vector Class Tutorial mit Beispielen
- Jagged Array In Java - Tutorial mit Beispielen
- Java Scanner Class Tutorial mit Beispielen
- Java String Tutorial | Java-String-Methoden mit Beispielen