JAVA迭代器原理源码解析

迭代器为什么不定义成类,而定义为一个借口?

假设迭代器定义为一个类,我们就可以通过创建对象调用方法来实现集合的遍历。
但是,java中拥有很多种集合,他们的数据结构是各不相同的,所以遍历的方式应该是不一样的!
最终就没有定义为迭代器类,而无论你是哪种集合都应该具有遍历功能,包含(判断、获取等功能)
判断和获取等功能应该是每种集合都应该具备的,而具体的实现方式又不太一样
所以把这些特有的功能提取出来,而不提供具体的实现。这种方式就是接口!!

在真正的具体子类中,以内部类的方式实现
  • ArrayList中迭代器的具体实现如下
public interface Inteator {
	public abstract boolean hasNext();
	public abstract Object next();
}
public interface Iterable {
	Iterator iterator();
}
public interface Collection extends Iterable {
	Iterator iterator();
}
public interface List extends Collection {
	Iterator iterator();
}
public calss ArrayList implements List {
	public Iterator iterator() {
		return new Itr();
	}
	private class Itr implements Iterator { //接口的具体实现类
		//包含了 所需功能  next()    hasNext() 等
	}
}
//编译看左边,运行看右边~~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值