0001 /* 0002 * 基于列表实现的元素迭代器 0003 */ 0004 0005 package dsa; 0006 0007 public class IteratorElement implements Iterator { 0008 private List list;//列表 0009 private Position nextPosition;//当前(下一个)元素的位置 0010 0011 //默认构造方法 0012 public IteratorElement() { list = null; } 0013 0014 //构造方法 0015 public IteratorElement(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 (null != nextPosition); } 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.getElem(); 0035 } 0036 }