练习10(Java第四版第十章练习2 /P192)

练习10(Java第四版第十章练习2 /P192)

继承迭代器,实现迭代功能

代码
package practice10;
class NewString{
	private String s;
	public NewString(String s){
		this.s=s;
	}
	public String toString(){ 
		return s;
	}
}

interface Selector{
	boolean end();
	Object current();
	void next();
}
//迭代器的实现
public class Sequence {
	private Object[] items;
	private int next=0;
	public Sequence(int size){    //外部类即为数组类型,在其中可以添加不同的类型的对象
		items=new Object[size];
	}
	public void add(Object x){
		if(next<items.length)
			items[next++]=x;
	}
	private class SequenceSelector implements Selector{
		private int i=0;
		public boolean end(){    //继承迭代器,使SequenceSelector具有迭代器功能
			return i==items.length;  //判断是否结束了
		}
		public Object current(){
			return items[i];  //返回当前的内容
		}
		public void next(){    //下一个,即代表迭代到下一个内容
			if(i<items.length) i++;
		}
	}
	public Selector selector(){      //因为迭代器SequenceSelector 为内部类,因此通过方法创建内部类
		return new SequenceSelector();
	}
	public static void main(String[] args) {
		NewString s1=new NewString("wang");
		NewString s2=new NewString("ya");
		NewString s3=new NewString("bo");
		Sequence sq=new Sequence(3);
		sq.add(s1);
		sq.add(s2);
		sq.add(s3);
		Selector sel=sq.selector();
		while(!sel.end()){
			System.out.println(sel.current()+" ");
			sel.next();
		}
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值