Iterator如何在TreeSet中实现

时间:2013-01-19 08:02:40

标签: iterator treeset

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

1 个答案:

答案 0 :(得分:0)

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

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

接下来搜索m的定义:

private transient NavigableMap<E,Object> m;

显然TreeSet指向NavigableMap这并不是一个惊喜,因为TreeSet's JavaDoc说:

  

NavigableSet实施基于TreeMap

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