我读了关于TreeSet的java源代码,但是在TreeSet中找不到Iterator的实现。有人能告诉我Iterator如何在TreeSet中实现,TreeSet中的源代码在哪里?谢谢!
答案 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
类包含相当多的内部类,整个结构非常复杂,但如果您感兴趣,可以自行解决。我想我给了你一个很好的开端。 ;-)