2013-01-19 29 views
0

我读了关于TreeSet的java源代码,但是我在TreeSet中找不到Iterator的实现。任何人都可以告诉我Iterator如何在TreeSet中实现,并且TreeSet中的源代码在哪里?谢谢!Iterator如何在TreeSet中实现

+0

我知道这个是旧的,但仍列为未答复。如果看起来合适,请您接受并提出我的答案吗?谢谢。 – kriegaex

回答

0

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

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

m定义下一个搜索:

private transient NavigableMap<E,Object> m; 

所以很明显TreeSet指向NavigableMap这是不真是一个惊喜,因为TreeSet's JavaDoc说:

A NavigableSet实施依据TreeMap

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

+0

感谢您的回答。 –