2

我阅读了有关 TreeSet 的 java 源代码,但在 TreeSet 中找不到 Iterator 的实现。谁能告诉我Iterator在TreeSet中是如何实现的,TreeSet中的源代码在哪里?谢谢!

4

1 回答 1

1

好吧,如果您查看源代码,TreeSet<E>.iterator()您会看到:

public Iterator<E> iterator() {
    return m.navigableKeySet().iterator();
}

接下来搜索 的定义m

private transient NavigableMap<E,Object> m;

很明显TreeSetNavigableMap这并不令人惊讶,因为TreeSet's JavaDoc说:

NavigableSet基于TreeMap. _

好的,让我们检查TreeMap. 在那里你会发现navigableKeySet()上面引用的方法,指向一个名为navigableKeySettype的成员TreeMap.KeySet<K>,一个静态内部类。反过来你会找到一种iterator()方法等等。该类TreeMap包含相当多的内部类,整个结构相当复杂,但如果您有兴趣可以自行整理。我想我给了你一个很好的开端。;-)

于 2013-02-16T17:54:00.700 回答