黑马程序员技术交流社区

标题: Iterator接口和Iterable接口的区别,还有获取的迭代器重置问题 [打印本页]

作者: 杨浩    时间: 2013-1-28 00:33
标题: Iterator接口和Iterable接口的区别,还有获取的迭代器重置问题
本帖最后由 杨浩 于 2013-1-28 16:38 编辑

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



作者: 冷延冰    时间: 2013-1-28 00:39
Iterator是迭代器类(其实在javaAPI中其也是一个接口),而Iterable是接口。
好多类都实现了Iterable接口,这样对象就可以调用iterator()方法(返回一个Iterator对象), 因为Iterator接口的核心方法next()或者hasNext() 是依赖于迭代器的当前迭代位置的。如果Collection直接实现Iterator接口,势必导致集合对象中包含当前迭代位置的数据(指针)。 当集合在不同方法间被传递时,由于当前迭代位置不可预置,那么next()方法的结果会变成不可预知。 除非再为Iterator接口添加一个reset()方法,用来重置当前迭代位置。  但即时这样,Collection也只能同时存在一个当前迭代位置。 而Iterable则不然,每次调用都会返回一个从头开始计数的迭代器。
      多个迭代器是互不干扰的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2