黑马程序员技术交流社区
标题:
关于SequenceInputStream的一个小疑问
[打印本页]
作者:
廖理
时间:
2012-5-10 18:00
标题:
关于SequenceInputStream的一个小疑问
为什么SequenceInputStream在合并流时,用的是Vector和Enumeration
,而不用ArrayList和Iterator呢,后者的效率不是更高吗?
为什么没有为者个搞个升级呢
作者:
杨鹏
时间:
2012-5-10 19:36
首先ArrayList和Vector在功能上基本上是一样的,他们的区别就是ArrayList线程没用同步,而Vector的方法是线程同步的,所以Vector效率要低些。现在回到楼主的问题上,ArrayList和Iterator是可以用的,但最终都要转换为Enumeration的对象。转换事例如下:
//将ArrayList集合转换成Enumeration,假设存储流对象的集合是al
final Iterator<BufferedInputStream> it = al.iterator();
Enumeration<BufferedInputStream> en = new Enumeration<BufferedInputStream>() //匿名内部类
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public BufferedInputStream nextElement()
{
return it.next();
}
};//通过方式就可以获取Enumeration的一个子类对象,这样就可以把这个对象传递给SequenceInputStream构造方法的参数。
作者:
小鹿叙鹿
时间:
2012-5-10 21:04
不能完全那么的说,主要看你程序是注重安全还是速度了,如果是安全,用Vector是正确的选择,但是如果重视的是效率
那么Vector就不行了,就得该成ArrayList这个集合了。
不要说ArrayList集合没有Enumeration对象,我们可以在Collections集合工具中找方法
,返回类型为Enumeration<T> Enumeration=Collections.enumeration(Collection<T> c) 返回一个指定 collection 上的枚举。
这样也可以使用ArrayList,并且效率更好一些。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2