类图
源码
AbstractIterator.java 抽象迭代器 package com.iterator; public abstract class AbstractIterator { //抽象迭代器类 //移到下一个元素 public abstract void next(); //移到上一个元素 public abstract void previous(); //获取上一个元素返回object public abstract Object getPrevious(); //获取下一个元素放回OBJECT public abstract Object getNext(); //是否是第一个元素boolean public abstract boolean isNext(); //是否是最后一个元素 public abstract boolean isFrist(); } ProducteIterator.java package com.iterator; import java.util.ArrayList; import java.util.List; public class ProducteIterator extends AbstractIterator { private List<Object> objectList = new ArrayList<Object>(); private int cursor1; //游标 private int cursor2; //游标2 public ProducteIterator(ConcreteObjectList obj) { // TODO Auto-generated constructor stub this.objectList=obj.getObjectList(); cursor1=0; cursor2=objectList.size()-1; } @Override public void next() { // TODO Auto-generated method stub if(cursor1<objectList.size()) { cursor1++; } } @Override public void previous() { // TODO Auto-generated method stub if(cursor2>-1) { cursor2--; } } @Override public Object getPrevious() { // TODO Auto-generated method stub return objectList.get(cursor2); } @Override public Object getNext() { // TODO Auto-generated method stub return objectList.get(cursor1); } @Override public boolean isNext() { // TODO Auto-generated method stub return (cursor1==objectList.size()); } @Override public boolean isFrist() { // TODO Auto-generated method stub return (cursor2==-1); } } AbstractObjectList.java 抽象聚合对象 package com.iterator; import java.util.*; public abstract class AbstractObjectList { //创建一个object 的arraylist集合 protected List<Object> objectList = new ArrayList<Object>(); public AbstractObjectList(List<Object> list) { // TODO Auto-generated constructor stub this.objectList=list; } //添加方法。 public void AddObject(Object o) { this.objectList.add(o); } //删除方法。 public void RemoveObject(Object o) { this.objectList.remove(o); } //获取到list public List<Object> getObjectList(){ return objectList; } //获取arrayList //获取迭代器的工厂方法 public abstract AbstractIterator createIterator(); } ConcreteObjectList.java 具体聚合对象 package com.iterator; import java.util.*; public abstract class AbstractObjectList { //创建一个object 的arraylist集合 protected List<Object> objectList = new ArrayList<Object>(); public AbstractObjectList(List<Object> list) { // TODO Auto-generated constructor stub this.objectList=list; } //添加方法。 public void AddObject(Object o) { this.objectList.add(o); } //删除方法。 public void RemoveObject(Object o) { this.objectList.remove(o); } //获取到list public List<Object> getObjectList(){ return objectList; } //获取arrayList //获取迭代器的工厂方法 public abstract AbstractIterator createIterator(); } Client.java 测试类 package com.iterator; import java.util.ArrayList; import java.util.List; public class Client { public static void main(String[] args) { List<Object> list1 =new ArrayList<Object>(); AbstractObjectList list = new ConcreteObjectList(list1); list.AddObject("20193901"); list.AddObject("20193902"); list.AddObject("20193903"); list.AddObject("20193904"); list.AddObject("20193905"); list.AddObject("20193906"); list.AddObject("20193907"); list.AddObject("20193908"); list.AddObject("20193909"); list.AddObject("20193910"); list.AddObject("20193911"); list.AddObject("20193912"); AbstractIterator iterator =list.createIterator(); System.out.println("正向遍历"); while(!iterator.isNext()) { System.out.print(iterator.getNext()+"\n"); iterator.next(); } //反向遍历 System.out.println("反向遍历"); while(!iterator.isFrist()) { System.out.print(iterator.getPrevious()+"\n"); iterator.previous(); } } }
测试截图