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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 328078121 中级黑马   /  2013-8-30 20:02  /  784 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 328078121 于 2013-8-30 23:20 编辑

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

2 个回复

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