首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

集成接口里iterator()的方法是如何实现的

2012-02-29 
集成接口里iterator()的方法是怎么实现的?各位大哥:小弟有一事不名,集成接口里iterator()的方法是怎么实现

集成接口里iterator()的方法是怎么实现的?
各位大哥:
小弟有一事不名,
集成接口里iterator()的方法是怎么实现的?
接口里的方法应该都是抽象的,那么在实际使用中,如下:
ArrayList   a=new   ArrayList();
Iterator   i   =   a.iterator();
while(i.hasNext())
{
Integer   intObj=(Integer)i.next();
sum+=intObj.intValue();
}
那么,Iterator   i   =   a.iterator();这一句的iterator()方法是怎么实现的呢,或者说是谁实现的呢!

[解决办法]
对于ArrayList来说
其超类AbstractList中有一个内部类
private class Itr implements Iterator <E>
他实现了Iterator接口
然后通过
public Iterator <E> iterator() {
return new Itr();
}
返回这个内部类的对象.
这个内部类可以对AbstractList的成员变量,方法进行操作.

对于不同的容器,这个内部类的实现各不相同,
而其存在的目的是实现通用的遍历容器的方法

具体的可以看看各个容器实现的源码
[解决办法]
ArrayList a=new ArrayList(); 这句通常这样写: List a=new ArrayList();
List 接口是定义为可以被iterate的,所以所有implements List 的class 都要去实现它。也是就是说要写一个Iterator 的实现。 你上边用到的就是ArrayList这个class实现的。 ArrayList实现起来比较简单,也就是让它的Iterator记住当前的位置,然后每一次用next()就把当前的element返回然后增加当前的位置。 hasNext()也就是去比较一下当前位置与array的长度。 你高兴也可以自己写一个ArrayList,不难。

热点排行