1.定義#
提供一種方法訪問一個容器對象中各個元素,而又不需要暴露該對象的內(nèi)部細節(jié)。大部分語言中已經(jīng)在常用數(shù)據(jù)結(jié)構(gòu)類型中實現(xiàn),不需要自己動手實現(xiàn)。主要用于遍歷一個容器對象。實現(xiàn)中迭代器類主要用一個游標(biāo)在容器元素間前后移動。
2.類圖#

類圖
3.實現(xiàn)#
3.1抽象迭代器##
public interface Iterator{
public Object next();
public boolean hasNext();
public boolean remove();
}
3.2具體迭代器##
public class ConcreteIterator implements Iterator {
private ArrayList<T> arrayList = new ArrayList<T>();
public int cursor = 0;
public ConcreteIterator(ArryaList<T> _arrayList){
this.arrayList = _arrayList;
}
public boolean hasNext(){
if(this.cursor == this.arrayList.size())
{
return false;
}else{
return true;
}
}
public Object next(){
Object result = null;
if(this.hasNext){
result = this.arrayList.get(this.cursor++);
}else{
result = null;
}
return result;
}
public boolean remove(){
this.arryaList.remove(this.cursor--);
}
}
3.3抽象容器類##
public interface Aggregate{
public void add(Object object);
public void remove(Object object);
public Iterator iterator();
}
3.4具體容器類##
public class ConcreteAggregate implements Aggregate{
private ArrayList arrayList = new ArrayList();
public void add(Object object){
this.arrayList.add(object);
}
public Iterator iterator(){
return new ConcreteIterator(this.arrayList);
}
public void remove(){}
}