[英]Where is the iterator() method in LinkedList class in Java?
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中定义的抽象方法iterator()。 因此,LinkedList是一个实现List接口的具体类,该List接口扩展了Collection接口,应该具有iterator()方法的重写版本,我想...
我看到了SUN公司ArrayList类的源代码,并且内部有一个实现Iterator接口的内部类“ Itr”,通过在ArrayList类内部调用“ public Iterator iterator()”方法,它将返回一个“ new Itr” ()”。
但是我的困惑是我无法在LinkedList中找到iterator()方法。 我只在LinkedList类中找到了一个“ descendingIterator()”方法,这不是我想要的...但是,LinkedList中iterator()方法的重写版本到底在哪里? 在我的代码中,我创建了一个LinkedList对象,并使用该对象调用了它的iterator()方法,并且它可以工作。 但是,由于LinkedList中没有interator()方法的重写版本,为什么它可以工作? 它是否在诸如List之类的超类中调用interator()方法? 采集? 但是这些都是接口,没有针对interator()的具体方法主体。...为什么当迭代器引用“ it”调用hasNext和next方法时它仍然可以工作?
抱歉,我的冗长的问题陈述...希望我能使您理解我的困惑。...非常感谢您的帮助,谢谢!
LinkedList扩展了一个抽象AbstractSequentialList
类,该类具有方法get
, set
, iterator
, add
和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>
此方法在AbstractSequentialList中的实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.