我对以下方法有点困惑java.util.TreeMap:
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;
}
}
此方法用于 TreeMap 的containsValue方法。并被告知检索第一个条目的后继者和先前检索到的后继者的后继者,依此类推。因此,上述方法检索整个 TreeMap 的条目。但我不是很明白它是如何运作的,它是如何寻找继任者的?
谢谢!