2016-02-28 92 views
1

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

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

说你的班级链接如下所示。

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 

而且你的链表类有一个场链接第一和一些操作的列表。

我的问题是

为什么我不能只是一个int变量(例如:诠释计数;)作为链接类中的字段,然后就增加它时,它被称为构建一个整体,而不是类,称为迭代器,只是为了在列表中来回遍历?

书上说这种方法

的一个问题是,你可能需要 比一个参考更多,就像你经常同时使用多种阵列 指数。

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

预先感谢您。

+0

java中有内建数组列表为什么不看一下它,你可以在指定的位置插入所有操作,也可以动态地插入。 – SmashCode

+0

当然,你可以做到这一点。也许更好的问题是:迭代器模式的动机是什么?模式是面向对象编程中常见问题的解决方案。以下是Iterator的动机:https://sourcemaking.com/design_patterns/iterator – duffymo

+0

您可能需要查看[this](http://www.journaldev.com/1716/iterator-design-pattern-in-java-示例教程)欣赏迭代器模式。 – SomeDude

回答

2

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

什么用途将是Link.count字段?我没有看到通常有用的目的。

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

迭代器很有用,因为它们封装了迭代的概念。迭代器的单一职责是迭代一些迭代器。您可以迭代元素而不必知道底层存储的任何信息。