2013-01-19 33 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

感謝您的回答。 –