[Java] TreeMap-Nachfolgemethode und Komplexität von entrySet

Succcessor Method

As we know TreeMap is implemented by Binary Search Tree. So I am very curious about the entrySet or subMap method implementation and complexity.

It turns out java do it very straight forward. For entrySet, it start from the first node and by finding successor to move to next node.

It has a successor method to find next node by the following steps.

/**
 * Returns the successor of the specified Entry, or null if no such.
 */
static <K,V> TreeMap.Entry<K,V> successor(Entry<K,V> t) {
    if (t == null)
        return null;
    else if (t.right != null) {
        Entry<K,V> p = t.right;
        while (p.left != null)
            p = p.left;
        return p;
    } else {
        Entry<K,V> p = t.parent;
        Entry<K,V> ch = t;
        while (p != null && ch == p.right) {
            ch = p;
            p = p.parent;
        }
        return p;
    }
}

Complexity About the complexity, here has a good explain. Assume we go through a balanced BST. We can separate it as two parts.

The average steps is 2 according to the explain here.sotheaveragecomplexityofsuccessorisO(1)andthecomplexityofgoingthroughallelementswithentrySetisO(n).

Recommended Posts

[Java] TreeMap-Nachfolgemethode und Komplexität von entrySet
Java-Methoden und Methodenüberladungen
[Java-Anfänger] == Operator und Gleiche Methode
Java (Methode)
Java-Methode
[Java] -Methode
[Java] -Methode
Wie man die Java Silver Prüfung ablegt und wie man lernt
[Java] Vergleich von Sammlungs- und StringBuilder-Operationsmethoden
Java8-Methodenreferenz
[Java] forEach-Methode
XXE und Java
Java8-Methodenreferenz
[Java] Zufällige Methode
[Java] Split-Methode
JAVA DB-Verbindungsmethode
Getter und Setter (Java)
[Java] Thread und ausführbar
Java Learning 2 (Lernen Sie die Berechnungsmethode)
Java wahr und falsch
Java-Lernnotiz (Methode)
[Java] Vergleich von Zeichenketten und && und ||
Informationen zur Bindung von Java-Methoden
Java 8 studieren (siehe Methode)
Java-Programmierung (Klassenmethode)
Java - Serialisierung und Deserialisierung
[Java] Argumente und Parameter
timedatectl und Java TimeZone
[Java] Verzweigen und Wiederholen
[Java] Variablen- und Typtypen
[Java] Grundlegende Methodenhinweise
Java (Klasse und Instanz)
[Java] Überladen und überschreiben
[Java] Vergleichsmethode für Zeichenketten und Vergleichsmethode mit regulären Ausdrücken