java - Java 链表迭代器

标签 java

我目前正在研究链表和迭代器(使用 Lafore 的)。

我不确定为什么我们首先需要迭代器。

假设您的类(class)链接如下所示。

class Link{
public int iData; // data
public double dData; /d/ data
public Link next; //reference to next link
//----------------------------------
public Link(int id, double dd){
    iData = id; //initialize data
    dData = dd;// 'next' is automatically set to null.
}
//----------------------------------
public void displayLink(){
    System.out.print("{"+iData+", "+dData+"} ");
}
//----------------------------------
}//end class Link

您的 LinkList 类有一个字段首先链接和一些列表操作。

我的问题是

为什么我不能只添加一个 int 变量(例如:int count;)作为 Link 类的字段,然后在调用时递增它,而不是构建整个类,称为迭代器,只是为了在列表中来回遍历?

书上说

One problem with this approach is that you might need more than one such reference, just as you often use several array indices at the same time.

这是什么意思?你能举个例子说明这个问题何时发生吗?

提前谢谢您。

最佳答案

如果添加 count领域 Link ,那么如果您在中间某处插入一个元素,则必须更新 .count所有后续元素中的字段。这会使插入操作效率低下。

Link.count 有什么用? field ?我认为这没有什么普遍有用的目的。

迭代器很好,但你实际上并不需要它。如果你想遍历一个链表,你当然可以不用它。所以我真的不认为你反对链表上的迭代器。

迭代器很有用,因为它们封装了迭代的概念。迭代器的唯一职责是迭代某些可迭代对象。您可以迭代元素,而无需了解有关底层存储的任何信息。

关于java - Java 链表迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35684051/

相关文章:

java - 写入 CSV 文件 : opencsv 2. 3

java - 用 Java 编写函数?

java - 使用按日期排序的文件启动 JFileChooser

java - Kotlin - Spring REST - 不会调用带有 ExceptionHandler 的 ControllerAdvice

java - 仅使用递归设置从 1 到所选数字的数字

java - 如何将 9 位整数解码为随机 4 位数字

java - 带有@Loggable 注释的方法从不打印方面日志

java - 编译器如何决定重载和覆盖?

java - Jackcess 解码不支持警告

java - POJO 作为 mongodb 中的文档