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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 范龙彬 黑马帝   /  2011-11-7 18:12  /  2334 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



问题1.Enumeration<FileInputStream> en = new Enumeration<FileInputStream>();这一句下面大括号内的这段代码怎么解释?

       2.Iterator 和 Enumeration 什么关系
    3.Vectorod 类中的这个方法  " Vect   Enumeration<E> elements() 返回此向量的组件的枚举。 "  怎么用的.
...  求解

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

3 个回复

倒序浏览
1.这种格式是匿名内部类,着两个方法实现迭代的功能
2.Iterator是对 collection集合 进行迭代的迭代器。迭代器取代了  Enumeration。迭代器与枚举有两点不同:
迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。
方法名称得到了改进。 (文档原文)
3.用法
例如定义一个集合
Vector<E> v  ;
获得这个集合的所有元素
Enumeration<E> e = v.elements();
一个一个的调用元素
e.hasMoreElements();)

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
1.尖括号里面表示的是Enumeration这个集合只能装FileInputStream对象类型的,其他的不行如果还不懂的话可以再去看看毕老师的视频。
2.
1).Enumeration 枚举接口其实是一个比 Iterator 迭代器接口更早期的枚举集合中的元素的接口。
2).Enumeration 虽然可能过时而被 Iterator 替代,但很多 servlet 还用到,所以还有学习的必要。
3).迭代器允许调用方利用定义良好的语义在迭代期间从迭代器所指向的集合移除元素。
3.比如说你上面的那个图片的代码中的SequenceInputStream构造方法中需要用到Enumeration这个类型的参数而不能直接的使用Vectorod类型的对象,但是我们之前又把FileInputStream对象放到了Vectorod集合中,所以我们就调用.Vectorod 类中的    elements() 返回此向量的组件的枚举,再让他的引用传递给SequenceInputStream构造方法。
回复 使用道具 举报
1.枚举是泛型类,这个例子中装的是FileInputStream的对象。
2.我也不是很懂,所以我用Vector,很简单明了,效率稍低。
3.Vector的elements()方法 直接返回一个 Enumeration()类型,所以,可以直接用于SequenceInputStream(Enumeration<? extends InputStream>)的构造函数中,这样就完成了流的合并。后面操作就只需要用read()方法读取SequenceInputStream()中的数据。

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马