链表的使用中find操作是常见的,很多时候也需要对链表进行遍历。如果使用迭代器遍历每一个对象,这样就会使数据结构与遍历对象(迭代器)区分开,java中的Iterator作为轻量级对象,创建代价比较小。至少在使用迭代器可以有一下几点好处:
1 迭代器可以提供统一的迭代方式,也就是说对于链表、队列、数组、叉树都可以使用迭代器来时实现迭代。
2 迭代器可以在客户端透明的情况下提供各种不同的迭代方式,迭代器可以实现对数据结构“一个不漏”的迭代。
这里以链表为例,使用迭代器对链表进行迭代操作。首先需要创建一个链表,之后需要创建一个和链表相关联的迭代器对象。
首先创建一个链表Node。
class Link6
{
public long dData;
public Link6 next;
public Link6(long dd)
{
dData = dd;
}
public void displayLink()
{
System.out.print(dData + " ");
}
}
创建链表包括一些数据添加等操作。
class LinkListA
{
private Link6 first;
public LinkListA()
{
first = null;
}
public Link6 getFirst()
{
return first;
}
public void setFirst(Link6 f)
{
first = f;
}
public boolean isEmpty()
{ return first==null; }
public ListIterator getIterator()
{
return new ListIterator(this);
}
public void displayList()
{
Link6 current = first;
while(current != null)
{
current.displayLink();
current = current.next;
}
System.out.println("");
}
}
以上与常见的链表操作大同小异。创建好了链表类之后就可以创建基于链表的迭代器类了。
class ListIterator
{
private Link6 current;
private Link6 previous;
private LinkListA ourList;