集成接口里iterator()的方法是怎么实现的?

zhengypjob 2007-09-24 06:34:18
各位大哥:
小弟有一事不名,
集成接口里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()方法是怎么实现的呢,或者说是谁实现的呢!
...全文
134 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengypjob 2007-09-24
  • 打赏
  • 举报
回复
谢谢,感谢你的指导!
cl55 2007-09-24
  • 打赏
  • 举报
回复
C++ 的generic programming 全是讲这些东西
cl55 2007-09-24
  • 打赏
  • 举报
回复
ArrayList a=new ArrayList(); 这句通常这样写: List a=new ArrayList();
List 接口是定义为可以被iterate的,所以所有implements List 的class 都要去实现它。也是就是说要写一个Iterator 的实现。 你上边用到的就是ArrayList这个class实现的。 ArrayList实现起来比较简单,也就是让它的Iterator记住当前的位置,然后每一次用next()就把当前的element返回然后增加当前的位置。 hasNext()也就是去比较一下当前位置与array的长度。 你高兴也可以自己写一个ArrayList,不难。
zhengypjob 2007-09-24
  • 打赏
  • 举报
回复
非常谢谢,我去再去看下这个容器实现的源码
zhengypjob 2007-09-24
  • 打赏
  • 举报
回复
我现在的疑问是,这个方法到底是怎么实现的(因为,我认为接口里的方法不实现的话,那么其他类调用这个接口里方法的时候,就没有什么意义/也就是我认为接口里的方法是必须实现了,其他类才能调用的,不知道,这个看法对不对),谢谢!
zephyr_cc 2007-09-24
  • 打赏
  • 举报
回复
对于ArrayList来说
其超类AbstractList中有一个内部类
private class Itr implements Iterator<E>
他实现了Iterator接口
然后通过
public Iterator<E> iterator() {
return new Itr();
}
返回这个内部类的对象.
这个内部类可以对AbstractList的成员变量,方法进行操作.

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

具体的可以看看各个容器实现的源码

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧