类图

源码
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();
}
}
}
测试截图
