黑马程序员技术交流社区

标题: 关于迭代器的问题... [打印本页]

作者: 328078121    时间: 2013-8-30 20:02
标题: 关于迭代器的问题...
本帖最后由 328078121 于 2013-8-30 23:20 编辑

迭代器是集合内的一个内部类,里面定义了一些取元素的方法,使用时用iterator方法返回一个内部类的
实例然后再调用这些方法,这里为什么要用迭代器呢?也就是为什么非要把这些方法定义在内部类里,
我觉得视乎直接把这些方法定义在集合里也可以啊,就像addremove,等方法,直接用集合调用不就行了?
干嘛要弄一个迭代器这东西啊,像add等方法也可以弄个什么添加器的内部类,弄个方法返回这个添加器
再调用add,这不是多此一举吗


作者: 月黑风高    时间: 2013-8-30 21:04
Iterator接口就是对所有的Collection容器进行元素取出的公共接口,最初的集合体系并不健全,Iterator也是从JDK1.2版本开始有的,为了方便某些集合而定义。
亲,你定义在内部,耦合性会很高,为什么会使用到多态,相信你明白道理是一样的。
为了提高扩展型,降低耦合性!许多操作虽然觉得代码比较多,比较繁琐,但是方便扩展。
作者: wumuzhong    时间: 2013-8-30 21:45
迭代模式是访问集合类的通用方法,只要集合类实现了Iterator接口,就可以用迭代的方式来访问集合类内部的数据,Iterator访问方式把对不同集合类的访问逻辑抽象出来,使得不用暴露集合内部的结构而达到循环遍历集合的效果。 访问代码和集合是紧耦合,无法将访问逻辑从集合类和客户端代码中剥离出来,每一种集合类对应一种访问方式,代码不可重用。 为解决以上问题,Iterator模式总是用同一种逻辑来遍历集合。 每一种集合类返回的Iterator具体类型可能不同,Array可能返回ArrayIterator,Set可能返回SetIterator,Tree 可能返回TreeIterator,但是它们都实现了Iterator接口,因此,客户端不关心到底是哪种Iterator,它只需要获得这个 Iterator接口即可




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