Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java TreeMap: Sortierte Maps meistern mit praktischen Beispielen

Java TreeMap

Erkunden Sie die Java TreeMap-Klasse – eine leistungsstarke, natürlich sortierte Map-Implementierung – mit klaren Beispielen, Schlüsseloperationen und fortgeschrittenen Navigationstechniken.

Die TreeMap-Klasse ist Teil des Java Collections Framework und bietet eine Rot-Schwarz-Baum-Implementierung, die ihre Einträge gemäß der natürlichen Ordnung der Schlüssel oder einem benutzerdefinierten Comparator sortiert hält. Sie implementiert das NavigableMap-Interface, das praktische Methoden für Traversierung und Abfrage der Map hinzufügt.

Java TreeMap: Sortierte Maps meistern mit praktischen Beispielen

TreeMap erstellen

Bevor Sie eine TreeMap nutzen können, importieren Sie das Paket:

import java.util.TreeMap; 

Dann erstellen Sie eine Instanz:

TreeMap<Key, Value> numbers = new TreeMap<>(); 

Standardmäßig sind Schlüssel in natürlicher aufsteigender Reihenfolge sortiert. Benötigen Sie benutzerdefinierte Ordnung, übergeben Sie einen Comparator an den Konstruktor.


TreeMap Methoden Überblick

Die Klasse bietet einen reichen Satz an Operationen. Unten sind Schlüsselkategorien mit Code-Snippets.


Elemente einfügen

Beispiel:

import java.util.TreeMap; class Main { public static void main(String[] args) { TreeMap<String, Integer> evenNumbers = new TreeMap<>(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); evenNumbers.putIfAbsent("Six", 6); System.out.println("TreeMap of even numbers: " + evenNumbers); TreeMap<String, Integer> numbers = new TreeMap<>(); numbers.put("One", 1); numbers.putAll(evenNumbers); System.out.println("TreeMap of numbers: " + numbers); } } 

Ausgabe

TreeMap of even numbers: {Four=4, Six=6, Two=2} TreeMap of numbers: {Four=4, One=1, Six=6, Two=2} 

Auf Elemente zugreifen

Collection Views nutzen

Beispiel:

import java.util.TreeMap; class Main { public static void main(String[] args) { TreeMap<String, Integer> numbers = new TreeMap<>(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("TreeMap: " + numbers); System.out.println("Key/Value mappings: " + numbers.entrySet()); System.out.println("Keys: " + numbers.keySet()); System.out.println("Values: " + numbers.values()); } } 

Ausgabe

TreeMap: {One=1, Three=3, Two=2} Key/Value mappings: [One=1, Three=3, Two=2] Keys: [One, Three, Two] Values: [1, 3, 2] 

Werte abrufen

Beispiel:

import java.util.TreeMap; class Main { public static void main(String[] args) { TreeMap<String, Integer> numbers = new TreeMap<>(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("TreeMap: " + numbers); int value1 = numbers.get("Three"); System.out.println("Using get(): " + value1); int value2 = numbers.getOrDefault("Five", 5); System.out.println("Using getOrDefault(): " + value2); } } 

Ausgabe

TreeMap: {One=1, Three=3, Two=2} Using get(): 3 Using getOrDefault(): 5 

Einträge entfernen

Beispiel:

import java.util.TreeMap; class Main { public static void main(String[] args) { TreeMap<String, Integer> numbers = new TreeMap<>(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("TreeMap: " + numbers); int removed = numbers.remove("Two"); System.out.println("Removed value: " + removed); boolean removedPair = numbers.remove("Three", 3); System.out.println("Is the entry {Three=3} removed? " + removedPair); System.out.println("Updated TreeMap: " + numbers); } } 

Ausgabe

TreeMap: {One=1, Three=3, Two=2} Removed value: 2 Is the entry {Three=3} removed? true Updated TreeMap: {One=1} 

Werte ersetzen

Beispiel:

import java.util.TreeMap; class Main { public static void main(String[] args) { TreeMap<String, Integer> numbers = new TreeMap<>(); numbers.put("First", 1); numbers.put("Second", 2); numbers.put("Third", 3); System.out.println("Original TreeMap: " + numbers); numbers.replace("Second", 22); numbers.replace("Third", 3, 33); System.out.println("After replace(): " + numbers); numbers.replaceAll((k, v) -> v + 2); System.out.println("After replaceAll(): " + numbers); } } 

Ausgabe

Original TreeMap: {First=1, Second=2, Third=3} After replace(): {First=1, Second=22, Third=33} After replaceAll(): {First=3, Second=24, Third=35} 

Da TreeMap NavigableMap implementiert, bietet es Methoden für effiziente Strukturabfragen.

Erste und letzte Elemente

Beispiel:

import java.util.TreeMap; class Main { public static void main(String[] args) { TreeMap<String, Integer> numbers = new TreeMap<>(); numbers.put("First", 1); numbers.put("Second", 2); numbers.put("Third", 3); System.out.println("TreeMap: " + numbers); System.out.println("First Key: " + numbers.firstKey()); System.out.println("Last Key: " + numbers.lastKey()); System.out.println("First Entry: " + numbers.firstEntry()); System.out.println("Last Entry: " + numbers.lastEntry()); } } 

Ausgabe

TreeMap: {First=1, Second=2, Third=3} First Key: First Last Key: Third First Entry: First=1 Last Entry: Third=3 

Ceiling, Floor, Higher und Lower

Diese Methoden geben Keys oder Entries relativ zu einem gegebenen Key zurück, was Range-Queries erleichtert.

Beispiel:

import java.util.TreeMap; class Main { public static void main(String[] args) { TreeMap<String, Integer> numbers = new TreeMap<>(); numbers.put("First", 1); numbers.put("Second", 5); numbers.put("Third", 4); numbers.put("Fourth", 6); System.out.println("TreeMap: " + numbers); System.out.println("higherKey('Fourth'): " + numbers.higherKey("Fourth")); System.out.println("higherEntry('Fourth'): " + numbers.higherEntry("Fourth")); System.out.println("lowerKey('Fourth'): " + numbers.lowerKey("Fourth")); System.out.println("lowerEntry('Fourth'): " + numbers.lowerEntry("Fourth")); System.out.println("ceilingKey('Fourth'): " + numbers.ceilingKey("Fourth")); System.out.println("ceilingEntry('Fourth'): " + numbers.ceilingEntry("Fourth")); System.out.println("floorKey('Fourth'): " + numbers.floorKey("Fourth")); System.out.println("floorEntry('Fourth'): " + numbers.floorEntry("Fourth")); } } 

Ausgabe

TreeMap: {First=1, Fourth=6, Second=5, Third=4} higherKey('Fourth'): Second higherEntry('Fourth'): Second=5 lowerKey('Fourth'): First lowerEntry('Fourth'): First=1 ceilingKey('Fourth'): Fourth ceilingEntry('Fourth'): Fourth=6 floorKey('Fourth'): Fourth floorEntry('Fourth'): Fourth=6 

Polling und Ranges

pollFirstEntry() und pollLastEntry() entfernen und geben erste/letzte Einträge zurück.

import java.util.TreeMap; class Main { public static void main(String[] args) { TreeMap<String, Integer> numbers = new TreeMap<>(); numbers.put("First", 1); numbers.put("Second", 2); numbers.put("Third", 3); System.out.println("TreeMap: " + numbers); System.out.println("pollFirstEntry(): " + numbers.pollFirstEntry()); System.out.println("pollLastEntry(): " + numbers.pollLastEntry()); System.out.println("Updated TreeMap: " + numbers); } } 

Ausgabe

TreeMap: {First=1, Second=2, Third=3} pollFirstEntry(): First=1 pollLastEntry(): Third=3 Updated TreeMap: {Second=2} 

headMap, tailMap, subMap

Diese Methoden liefern Views über spezifische Key-Ranges.

Beispiel:

import java.util.TreeMap; class Main { public static void main(String[] args) { TreeMap<String, Integer> numbers = new TreeMap<>(); numbers.put("First", 1); numbers.put("Second", 2); numbers.put("Third", 3); numbers.put("Fourth", 4); System.out.println("TreeMap: " + numbers); System.out.println("headMap('Fourth'): " + numbers.headMap("Fourth")); System.out.println("headMap('Fourth', true): " + numbers.headMap("Fourth", true)); System.out.println("tailMap('Second'): " + numbers.tailMap("Second")); System.out.println("tailMap('Second', false): " + numbers.tailMap("Second", false)); System.out.println("subMap('Fourth', true, 'Third', false): " + numbers.subMap("Fourth", true, "Third", false)); } } 

Ausgabe

TreeMap: {First=1, Fourth=4, Second=2, Third=3} headMap('Fourth'): {First=1} headMap('Fourth', true): {First=1, Fourth=4} tailMap('Second'): {Second=2, Third=3, Fourth=4} tailMap('Second', false): {Third=3, Fourth=4} subMap('Fourth', true, 'Third', false): {Fourth=4, Second=2} 

Zusätzliche Utility-Methoden

MethodeBeschreibung
clone()Erstellt flache Kopie der Map.
containsKey()Prüft Anwesenheit eines Schlüssels.
containsValue()Prüft auf spezifischen Wert.
size()Gibt Anzahl Einträge zurück.
clear()Entfernt alle Einträge.

Benutzerdefinierte Schlüsselordnung mit Comparator

Um Keys anders zu sortieren – etwa umgekehrte Reihenfolge oder case-insensitive Strings – implementieren Sie Comparator und übergeben ihn an den TreeMap-Konstruktor.

import java.util.TreeMap; import java.util.Comparator; class Main { public static void main(String[] args) { TreeMap<String, Integer> numbers = new TreeMap<>(new CustomComparator()); numbers.put("First", 1); numbers.put("Second", 2); numbers.put("Third", 3); numbers.put("Fourth", 4); System.out.println("TreeMap: " + numbers); } static class CustomComparator implements Comparator<String> { @Override public int compare(String a, String b) { // Umgekehrte natürliche Ordnung return a.compareTo(b) * -1; } } } 

Ausgabe

TreeMap: {Third=3, Second=2, Fourth=4, First=1} 

Für mehr zu Comparator siehe die offizielle Java-Dokumentation.

Java

  1. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  2. Java Kommentare: Typen, Verwendung und Best Practices
  3. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  4. Java Strings meistern: Erstellung, Methoden und Best Practices
  5. Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  6. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  7. Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
  8. Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
  9. Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
  10. Java Collections Algorithmen meistern: Sortieren, Mischen und mehr