编写一个遍历器类,类似于Iterator,并对他测试,看是都正确

今天看think in java 看到内部类时,有一程序例子是遍历类,但是书上设计的是在这个遍历类中有boolean end()、int next()方法, 所以自己也想实现一个遍历类, 并参考Iterator类, 但是这个类是一个接口,方法中并没有具体的实现,所以参考也是白参考了,既然他不能被参考,那我就在想想其他的办法,遍历的方法基本上有两种:

1、是一个是利用Iterator类

2、在for循环中调用集合的get(int index) 方法获得集合中所装的元素

所以就去找集合中get(int index)方法的源代码, 后来总之有那么一点头绪了。

编写一个遍历器类,类似于Iterator,让他却遍历一数组

 

模仿Iterator类进行设计, 在遍历器类中, 有一个hasnext() 方法, 另外一个是next()方法, 利用这个遍历器类对数组进行操作,所以考虑将遍历器类设计成一个接口。

 

 

package thinkinjava.bianli;

/**
 * 编写一个遍历类, 让他遍历一个数组,并对他测试是否正确
 * @author zhuhezan
 *
 */
public class Test {

	Object[] objs = null;
	
	//objs数组的索引
	private int index = 0;
	
	Test(int length) {
		objs = new Object[length];
	}
	
	public boolean add(Object obj) {
		//判断当前数组小标有没有超过数组的长度
		if (index < objs.length) {
			objs[index] = obj;
			index ++;
			return true;
		}
		return false;
	}
	
	class MyBianLi implements BianLi {
		private int i = 0;
		@Override
		public boolean hasNext() {
			// TODO Auto-generated method stub
			if (i < objs.length) {
				return true;
			}
			return false;
		}
		
		@Override
		public Object next() {
			// TODO Auto-generated method stub
			if (i <objs.length) {
				return objs[i++];
			}
			return null;
		}
	}
	
	public BianLi getBianLi() {
		return new MyBianLi();
	}
	
	public static void main(String[] args) {
		Test test = new Test(10);
		for (int i=0; i<10; i++) {
			test.add(i);
		}
		BianLi bianli = test.getBianLi();
		while (bianli.hasNext()) {
			Object obj = bianli.next();
			System.out.println(obj);
		}
	}
}

interface BianLi {
	boolean hasNext();
	Object next();
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值