当前位置: 首页 > 知识库问答 >
问题:

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

刘阳荣
2023-03-14
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是一个具体的类,它实现了扩展Collection接口的List接口,我想它应该有一个迭代器()方法的重写版本...

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

但我的困惑是在LinkedList中找不到一个iterator()方法。我只在LinkedList类中找到了一个“descendingIterator()”方法,这不是我要找的...但是在LinkedList中迭代器()方法的重写版本到底在哪里呢?在我的代码中,我创建了一个LinkedList对象,并使用该对象调用它的iterator()方法,并且它工作了。但是既然LinkedList中没有interator()方法的重写版本,为什么它还能工作呢?它是否在其超级类list中调用interator()方法?收藏?但这些都是没有interator()具体方法体的接口....另外,当迭代器引用“it”调用hasNext和next方法时,为什么它仍然有效?

抱歉,我冗长的问题陈述...希望这能让你明白我的困惑....非常感谢您的帮助谢谢!

共有1个答案

丁和歌
2023-03-14

LinkedList扩展了一个抽象AbstractSequentialList类,该类具有方法GetSetIteratorAddRemove的定义。因为AbstractSequentialList扩展了抽象的AbstractList类。

public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
{...}
 类似资料:
  • 本文向大家介绍Java AbstractCollection类的iterator()方法,包括了Java AbstractCollection类的iterator()方法的使用技巧和注意事项,需要的朋友参考一下 Java中AbstractCollection类的方法用于返回对该集合中包含的元素进行迭代的迭代器。 语法如下- 要使用Java中的AbstractCollection类,请导入以下包-

  • 本文向大家介绍Java中的ArrayBlockingQueue iterator()方法,包括了Java中的ArrayBlockingQueue iterator()方法的使用技巧和注意事项,需要的朋友参考一下 ArrayBlockingQueue类的方法以适当的顺序返回对该队列中的元素的迭代器。 语法如下。 要使用ArrayBlockingQueue类,您需要导入以下包。 以下是实现Java A

  • 本文向大家介绍Java中Iterator和Spilled Iterator的区别。,包括了Java中Iterator和Spilled Iterator的区别。的使用技巧和注意事项,需要的朋友参考一下 迭代器和拆分迭代器这两个接口都用于迭代集合。 Java 8中引入了拆分迭代器来实现并行性。它可以拆分给定的元素集,并可以使用不同的独立线程并行执行操作。它可以并行地以及顺序地遍历元素。splitIte

  • 好吧,所以我试图在Java创建自己的LinkedList类(带有泛型类型),但是遇到了一些问题。我创建了一个LinkedListNode类,它基本上设置并获取next和right指针以及节点的键。我的LinkedList类代码发布在下面,如果您编译并运行,您会发现它没有按照应该的方式设置列表。此刻,我正在尝试在节点x之后插入节点y,但我的打印输出看起来像: 键:5-上一键:6-下一键:6键:6-上

  • 本文向大家介绍Java HashSet iterator()方法与示例,包括了Java HashSet iterator()方法与示例的使用技巧和注意事项,需要的朋友参考一下 HashSet类方法 iterator()方法在java.util包中可用。 iterator()方法用于通过使用iterator()方法来迭代此HashSet中存在的所有元素。 iterator()方法是一种非静态方法,只

  • 问题内容: Oracle数据库中存储的已加载Java类的Java字节码在哪里?具体来说,是否有一个视图或表可用于获取Oracle中Java类模式对象的原始字节? 问题答案: 如果使用CREATE JAVA SOURCE命令将Java Source加载到Oracle数据库中,则可以转到数据字典视图USER_SOURCE并找到您的Java Source。 如果需要显示它或其他内容,可以签出DBMS_J