Java TreeMap - Datenstruktur

JavaBeginner
Jetzt üben

Einführung

Die TreeMap-Klasse in Java ist ein Teil der Java Collection-Schnittstelle und implementiert die Map-Schnittstelle. Sie speichert die Schlüssel-Wert-Paare in aufsteigender Reihenfolge, im Gegensatz zu anderen Map-Implementierungen. In diesem Lab werden Sie lernen, wie Sie die TreeMap-Klasse effektiv in Ihren Java-Programmen verwenden.

Erstellen einer TreeMap

  • Öffnen Sie Ihren Texteditor und erstellen Sie eine neue Datei namens TreeMapDemo.java im Verzeichnis ~/project.
  • Importieren Sie die erforderlichen Pakete:
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
  • Erstellen Sie ein TreeMap-Objekt:
Map<Integer, String> map = new TreeMap<>();

Hinzufügen von Elementen zur TreeMap

  • Verwenden Sie die put()-Methode, um Elemente zur TreeMap hinzuzufügen:
map.put(1, "John");
map.put(2, "Mary");
map.put(3, "Peter");

Fügen Sie diesen Code innerhalb der main-Methode hinzu.

Ausgeben der TreeMap

  • Verwenden Sie eine for-each-Schleife, um durch die TreeMap zu iterieren:
for(Map.Entry<Integer, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

Verwendung von benutzerdefiniertem Sortieren

  • Erstellen Sie eine neue Klasse namens Employee:
class Employee implements Comparable<Employee> {
    private int id;
    private String name;

    public Employee(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    @Override
    public int compareTo(Employee e) {
        return this.id - e.getId();
    }
}
  • Fügen Sie einige Employee-Objekte zur TreeMap hinzu:
Map<Employee, String> employeeMap = new TreeMap<>();
employeeMap.put(new Employee(3, "John"), "IT");
employeeMap.put(new Employee(2, "Mary"), "HR");
employeeMap.put(new Employee(1, "Peter"), "Finance");
  • Wenn Sie jetzt durch die TreeMap iterieren, wird sie basierend auf der Mitarbeiter-ID sortiert:
for(Map.Entry<Employee, String> entry : employeeMap.entrySet()) {
    System.out.println(entry.getKey().getId() + " "
                       + entry.getKey().getName() + " "
                       + entry.getValue());
}

Verwendung von Vergleichern zum Sortieren

  • Definieren Sie einen benutzerdefinierten Vergleicher in Ihrer TreeMapDemo-Klasse:
class DescendingOrder implements Comparator<Integer> {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2 - o1;
    }
}
  • Erstellen Sie ein neues TreeMap-Objekt mit dem benutzerdefinierten Vergleicher:
Map<Integer, String> treeMap = new TreeMap<>(new DescendingOrder());
treeMap.put(1, "John");
treeMap.put(4, "Mary");
treeMap.put(2, "Peter");
  • Wenn Sie jetzt durch das TreeMap iterieren, wird es in absteigender Reihenfolge sortiert:
for(Map.Entry<Integer, String> entry : treeMap.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

Zugreifen auf Map-Elemente

  • Verwenden Sie die get()-Methode, um auf ein bestimmtes Element zuzugreifen:
String name = map.get(1);
System.out.println("Name is " + name);

Entfernen von Map-Elementen

  • Verwenden Sie die remove()-Methode, um ein bestimmtes Element zu entfernen:
String removedName = map.remove(2);
System.out.println("Removed: " + removedName);

Abrufen der Map-Größe

  • Verwenden Sie die size()-Methode, um die Anzahl der Elemente in der TreeMap abzurufen:
int size = map.size();
System.out.println(size);

Abrufen der ersten und letzten Elemente

  • Verwenden Sie die firstKey()- und lastKey()-Methoden, um das erste und das letzte Element in der TreeMap abzurufen:
int firstKey = map.firstKey();
int lastKey = map.lastKey();

Abrufen eines Bereichs von Elementen

  • Verwenden Sie die subMap()-Methode, um einen Bereich von Elementen abzurufen:
Map<Integer, String> rangeMap = map.subMap(1, 3);
for(Map.Entry<Integer, String> entry : rangeMap.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

Kompiliere und führe das Programm aus

  • Öffnen Sie Ihren Terminal und navigieren Sie zum Verzeichnis ~/project.
  • Kompilieren Sie die Datei TreeMapDemo.java mit dem Befehl javac:
javac TreeMapDemo.java
  • Führen Sie das Programm mit dem Befehl java aus:
java TreeMapDemo

Zusammenfassung

In diesem Lab haben Sie über die TreeMap-Klasse in Java gelernt und erfahren, wie Sie sie effektiv in Ihren Programmen verwenden können. Sie haben gelernt, wie Sie eine TreeMap erstellen, Elemente hinzufügen und entfernen und Elemente basierend auf bestimmten Kriterien abrufen. Sie haben auch gelernt, wie Sie die Sortierreihenfolge mit Hilfe von Comparators anpassen können. Die TreeMap-Klasse bietet eine große Flexibilität und Kontrolle bei der Sortierung und Speicherung von Schlüssel-Wert-Paaren.