我目前正在研究链表和迭代器(使用 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/