黑马程序员技术交流社区

标题: SequenceInputStream 中的一些疑问 [打印本页]

作者: 范龙彬    时间: 2011-11-7 18:12
标题: SequenceInputStream 中的一些疑问


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

       2.Iterator 和 Enumeration 什么关系
    3.Vectorod 类中的这个方法  " Vect   Enumeration<E> elements() 返回此向量的组件的枚举。 "  怎么用的.
...  求解
作者: olkldksl    时间: 2011-11-7 18:24
1.这种格式是匿名内部类,着两个方法实现迭代的功能
2.Iterator是对 collection集合 进行迭代的迭代器。迭代器取代了  Enumeration。迭代器与枚举有两点不同:
迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。
方法名称得到了改进。 (文档原文)
3.用法
例如定义一个集合
Vector<E> v  ;
获得这个集合的所有元素
Enumeration<E> e = v.elements();
一个一个的调用元素
e.hasMoreElements();)

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




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