0001 /* 0002 * 基于列表实现的位置迭代器 0003 */ 0004 0005 package dsa; 0006 0007 public class IteratorPosition implements Iterator { 0008 private List list;//列表 0009 private Position nextPosition;//当前(下一个)位置 0010 0011 //默认构造方法 0012 public IteratorPosition() { list = null; } 0013 0014 //构造方法 0015 public IteratorPosition(List L) { 0016 list = L; 0017 if (list.isEmpty())//若列表为空,则 0018 nextPosition = null;//当前位置置空 0019 else//否则 0020 nextPosition = list.first();//从第一个位置开始 0021 } 0022 0023 //检查迭代器中是否还有剩余的位置 0024 public boolean hasNext() { return (nextPosition != null); } 0025 0026 //返回迭代器中的下一位置 0027 public Object getNext() throws ExceptionNoSuchElement { 0028 if (!hasNext()) throw new ExceptionNoSuchElement("意外:没有下一位置"); 0029 Position currentPosition = nextPosition; 0030 if (currentPosition == list.last())//若已到达尾位置,则 0031 nextPosition = null;//不再有下一个位置 0032 else//否则 0033 nextPosition = list.getNext(currentPosition);//转向下一位置 0034 return currentPosition; 0035 } 0036 }