A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨浩 于 2013-1-28 16:38 编辑

Iterator接口和Iterable接口的区别,你们怎么理解的呢?
通过iterator()方法获得的迭代器,有方法重置指针么?就是让next()方法重新从头开始,只有重新获取一个迭代器的方法么?


2 个回复

倒序浏览
Iterator是迭代器类(其实在javaAPI中其也是一个接口),而Iterable是接口。
好多类都实现了Iterable接口,这样对象就可以调用iterator()方法(返回一个Iterator对象), 因为Iterator接口的核心方法next()或者hasNext() 是依赖于迭代器的当前迭代位置的。如果Collection直接实现Iterator接口,势必导致集合对象中包含当前迭代位置的数据(指针)。 当集合在不同方法间被传递时,由于当前迭代位置不可预置,那么next()方法的结果会变成不可预知。 除非再为Iterator接口添加一个reset()方法,用来重置当前迭代位置。  但即时这样,Collection也只能同时存在一个当前迭代位置。 而Iterable则不然,每次调用都会返回一个从头开始计数的迭代器。
      多个迭代器是互不干扰的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马