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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

程序如下:
public static void merge()
{
      ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
      for(int x=1;x<=3;x++)
      {
         al.add(new FileInputStream("c:\\splits\\"+x+".part"));
      }
       /*
      final Iterator <FileInputStream> it=al.iterator();
      Enumeration<FileInputStream> en=new  Enumeration<FileInputStream> ()
      {
            public boolean hasMoreElements()
            {
                    return it.hasNext();
             }
             public FileInputStream nextElement()
             {
                    return it.next();
             }
       }
       SequenceInputStream sis=new  SequenceInputStream (en);
      */
       FileOutputStream fos =new FileOutputStream("c:\\splits\\1.bmp");
       byte[] buf=new byte[1024];
       int len=0;
       while((len=sis.read(buf))!=-1)
       {
               fos.write(buf,0,len);
        }
        fos.close();
        sis.close();
}
请问注释的部分啥思路?本来写Vector集合可以直接使用Enumeration,但考虑到低效就不用vector集合,但这样做高效体现在哪呢?

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

1 个回复

倒序浏览
本帖最后由 陈汉帆 于 2012-3-22 20:09 编辑

Enumeration<FileInputStream> en=new  Enumeration<FileInputStream> ()
       {
             public boolean hasMoreElements()
             {
                     return it.hasNext();
              }
              public FileInputStream nextElement()
              {
                     return it.next();
              }
        }
这部分表示匿名内部类,对Enumeration接口重写它的hasMoreElements()和nextElement()方法以实现匿名子类实例化,
Vector是同步的,ArrayList是不同步的,所以如果是单线程时Vector会影响性能;另一方面,当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样ArrayList就有利于节约空间了

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

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