迭代器模式

public interface MyIterator {
void first(); //将游标指向第一个元素
void next(); //将游标指向下一个元素
boolean hasNext();//判断是否存在下一个元素
boolean isFirst();
boolean isLast();
Object getCurrentObj();  //获取当前游标指向的对象

}


public class ConcreteMyAggregate{
private List<Object> list = new ArrayList<Object>();


public void addObject(Object obj){
this.list.add(obj);
}
public void removeObject(Object obj){
this.list.remove(obj);
}
public List<Object> getList() {
return list;
}
public void setList(List<Object> list) {
this.list = list;
}
//获得迭代器
public MyIterator  createIterator(){
return new ConcreteIterator();
}

//使用内部类定义迭代器,可以直接使用外部类的属性
private class ConcreteIterator implements MyIterator {
private int cursor;  //定义游标用于记录遍历时的位置

@Override
public void first() {
cursor = 0;
}


@Override
public Object getCurrentObj() {
return list.get(cursor);
}


@Override
public boolean hasNext() {
if(cursor<list.size()){
return true;
}
return false;
}


@Override
public boolean isFirst() {
return cursor==0?true:false;
}


@Override
public boolean isLast() {
return cursor==(list.size()-1)?true:false;
}


@Override
public void next() {
if(cursor<list.size()){
cursor++;
}
}
}
}


public class Client {


public static void main(String[] args) {
ConcreteMyAggregate cma = new ConcreteMyAggregate();
cma.addObject("aa");
cma.addObject("bb");
cma.addObject("cc");

MyIterator iter = cma.createIterator();
while(iter.hasNext()){
System.out.println(iter.getCurrentObj());
iter.next();
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值