链表迭代器Java

链表迭代器Java,java,Java,我目前正在研究链表和迭代器(使用Lafore的) 我不知道为什么我们首先需要迭代器 假设你的类链接如下所示 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;

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

我不知道为什么我们首先需要迭代器

假设你的类链接如下所示

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类有一个字段Link first和一些列表操作

我的问题是

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

书上说

这种方法的一个问题是,您可能需要 不止一个这样的引用,就像您经常使用几个数组一样 同时,指数

这是什么意思?你能给我举一个这个问题发生的例子吗


先谢谢你链接中添加<代码>计数>代码>字段,那么如果在中间插入某个元素,则必须更新所有后续元素中的<代码>计数>代码>字段。这将使插入操作效率低下

链接.count
字段又有什么用呢?我不认为这有什么普遍的用途

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


迭代器很有用,因为它们封装了迭代的概念。迭代器的唯一职责是对某个iterable进行迭代。您可以迭代元素,而不必了解任何底层存储。

java中有内置的arraylist,为什么不看看它呢?您可以在指定位置执行所有操作,也可以执行动态插入。当然,您可以这样做。也许更好的问题是:迭代器模式的动机是什么?模式是面向对象编程中常见问题的解决方案。这里是迭代器的动机:您可能想了解一下迭代器模式,我不明白这个int字段是什么意思。它会做什么?你所说的“无论何时”是什么意思?你不能“呼叫”一个班级。迭代器的概念是能够在集合上进行迭代,而不必考虑它是链表、数组列表还是哈希集:使用它的迭代器,并以相同的方式进行迭代,从而获得最佳性能。作为使用多个引用的示例,假设要按iData的升序迭代链接对象,但也按dData的升序(不是同时,而是在不同的情况下)。您可以对下一个链接使用两种不同的引用:
public link next_by_idata
公共链接下一步由数据。管理起来会有点复杂,但允许以任何一种方式快速访问。