迭代器模式(别名:游标)
提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
一 、 概述
迭代器模式是遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个称作迭代器的对象。二、迭代器模式的结构与使用
模式的结构中包括四种角色:
1.集合(Aggregate) :
在这里我们使用java.util包中的Collection接口作为模式中的集合角色。Java所有的集合都实现了该接口。
2.具体集合(ConcreteAggregate) :
在这里我们使用java.util包中的HashSet类的实例作为模式中的具体集合角色。
3.迭代器(Iterator) :
在本问题中,我们使用的迭代器是java.util包中的Itertator接口 。
4.具体迭代器(ConcreteIterator)
HashSet创建的集合可以使用iterator ()方法返回一个实现Iterator接口类的实例,即一个具体迭代器。
5.应用 Application.java_1
import java.util.*;
public classApplication{
public static void main(String args[]){
int n=20;
int sum=0;
Collection<RenMinMony> set=new HashSet<RenMinMony>();
for(inti=1;i<=n;i++){
if(i==n/2||i==n/5||i==n/6)
set.add(new RenMinMony(100,false));
else
set.add(new RenMinMony(100,true));
}
Iterator<RenMinMony> iterator=set.iterator();
intjia=1,zhen=1;
System.out.println("保险箱共有"+set.size()+"张人民币");
int k=0;
while(iterator.hasNext()){
RenMinMony money=iterator.next();
k++;
if(money.getIsTrue()==false){
System.out.println("第"+k+"张是假币,被销毁");
iterator.remove();
k++;
}
}
System.out.println("保险箱现有真人民币"+set.size()+"张,总价值是:");
iterator=set.iterator();
while(iterator.hasNext()){
RenMinMony money=iterator.next();
sum=sum+money.getValue();
}
System.out.println(sum+"元");
}
}
5.应用 Application.java_2
class RenMinMony{
int value;
private booleanisTrue;
RenMinMony(intvalue,boolean b){
this.value=value;
isTrue=b;
}
public booleangetIsTrue(){
return isTrue;
}
public intgetValue(){
return value;
}
}
三、迭代器模式的优点