繁体   English   中英

Java的LinkedList类中的iterator()方法在哪里?

[英]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类,该类具有方法getsetiteratoraddremove 因为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM