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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韦念欣 黑马帝   /  2012-6-20 16:32  /  1523 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 韦念欣 于 2012-6-22 01:45 编辑

基础视频讲到中SequenceInputStream和SequenceOutputStream都是JDK1.0的类,能够对多个流进行合并,初始化时需要几个流的枚举类型。
我觉得既然已经有了迭代器为什么还要枚举呢?没有没不用枚举的序列流?


评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
本帖最后由 陆强强 于 2012-6-20 16:51 编辑

SequenceInputStream和SequenceOutputStream要的Enumeration只有vector里有,而vector不能用迭代器
vector现在存在的价值就剩下枚举了
回复 使用道具 举报
      
    枚举就是把集合里的对象元素 一个一个提取出来!
比如说 你买了一合巧克力 里面有草莓味的 有香草口味的 有苹果口味的 你想把他们拿出来 就必须用“手”一个一个把他们拿出来 并且一次只能取一个哦 这里的手就是枚举器 你取的动作就是枚举的过程

Enumeration 和 Iterator 的作用都是迭代器的接口,迭代器的职责是遍历一个集合中的所有元素,而不需要让用户知道集合的具体实现方式

Enumeration有两个方法:hasMoreElements 和 nextElement 分别判断是否还有更多的元素,以及返回下一个元素
Iterator 有三个方法,hasNext,next,remove,前两个和Enumeration是对应的,remove用来删除当前迭代到的元素。


它们的好处都是为集合的遍历工作提供统一的接口,即便你更换了集合类的具体实现,你也不需要更换迭代的代码。坏处...好像没觉得有很明显的坏处,有一点是它并不灵活,以至于很多人会错误使用迭代器。比如在迭代过程中用非remove的方法增减元素是不行的。可以说迭代器只适合于做基本的遍历工作,并不适合做更复杂的逻辑。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼上说的不错,我明白了。
其实他们的基本功能都是差不多的,只是迭代器功能强大一些,兼容更多容器。
回复 使用道具 举报
Enumeration是个接口,你可以写成匿名内部类,然后用Iterator去模拟他,这样的效率高多了!!用hasNext去实现hasMoreElements,用next去实现nextElement,这个视频后面有讲到!!慢慢看吧!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马