Iterator(4)--Interface

       有时候我们要遍历容器,但是不同的容器的遍历方法是不一样的,所以我们得进一步遍历Interface,抽象出一个Iterator接口,来向用户屏蔽底层遍历的细节。

1.首先定义一个Iterator接口:

public interface Iterator {
	Object next();    //下一个数据节点
	boolean hasNext();  //是否有下一个
}

2.在Collection中使用Iterator这个接口:

public interface Collection {
	void add(Object o);    //添加
	int size();        //容器长度
	<strong><span style="color:#ff0000;">Iterator iterator();   //容器对象</span></strong>
}

3.则ArrayList和LinkedList中就会实现这个iterator()方法:

以ArrayList为例:

 

       public Iterator iterator() {
		
		return new ArrayListIterator();   //返回内部对象
	}
	
	private class ArrayListIterator implements Iterator {   //内部类来屏蔽ArrayList内部的遍历
		private int currentIndex = 0;

		@Override
		public boolean hasNext() {
			if(currentIndex >= index) return false;
			else return true;
		}

		@Override
		public Object next() {
			Object o = objects[currentIndex];
			currentIndex ++;
			return o;
		}
		
	}


以LinkedList为例:

        public Iterator iterator() {
		// TODO Auto-generated method stub
		return new LinkedListIterator();
	}
	
	private class LinkedListIterator implements Iterator {
		private int currentIndex = 0;
		//private Node temp;

		@Override
		public boolean hasNext() {
			if(currentIndex >= size) return false;
			else return true;
		}

		@Override
		public Object next() {
			Object o = head.getData();
			head=head.getNext();
			currentIndex ++;
			return o;
		}
		
	}


4.则在test.java中想对容器进行遍历的时候就可以如下操作:

              Iterator it = c.iterator();
		while(it.hasNext()) {
			Object o = it.next();
			System.out.print(o + " ");
		}

5.ok这样用户只需要得到iterator就可以了,不用关心它用的是什么容器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的幸运儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值