Java中LinkedList类中的迭代器()方法在哪里


package Practice;
import java.util.LinkedList;
import java.util.Iterator;
public class CollectionTest {
public static void main(String[] args) {
LinkedList<String> c = new LinkedList<String>();
c.add("Hello");
c.add("World");
c.add("java");
Iterator<String> it = c.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}

我的问题:由于Collection扩展了Iterable接口,因此它有在Iterable中定义的抽象方法迭代器((。所以,LinkedList是一个具体的类,它实现了扩展Collection接口的List接口,我想它应该有一个迭代器((方法的重写版本。。。

我看到了SUN公司的ArrayList类的源代码,里面有一个内部类"Itr",它实现了Iterator接口,通过调用ArrayList内部的"public Iterator迭代器(("方法,它将返回一个"new Itr(("。

但我的困惑是在LinkedList中找不到迭代器((方法。我只在LinkedList类中找到了一个"descendingIterator(("方法,这不是我想要的。。。但是LinkedList中迭代器((方法的重写版本到底在哪里?在我的代码中,我创建了一个LinkedList对象,并用这个对象调用它的迭代器((方法,它就工作了。但既然LinkedList中没有interator((方法的重写版本,为什么它能工作呢?它是否在像List这样的超类中调用interator((方法?收集但这些都是没有interator((的具体方法体的接口。。。。还有,当迭代器引用"it"调用hasNext和next方法时,为什么它仍然有效?

对不起,我的问题陈述太长了。。。我希望这能让你理解我的困惑。。。。非常感谢您的帮助,谢谢!

LinkedList扩展了一个抽象的AbstractSequentialList类,该类定义了方法getsetiteratoradd&remove。因为AbstractSequentialList扩展了一个抽象的AbstractList类。
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{...}

它在LinkedList的父类中:AbstractSequentialList

LinkedList<E> extends AbstractSequentialList<E>

该方法在AbstractSequenceList中的实现。

最新更新