zoukankan      html  css  js  c++  java
  • Java 获取Enumeration类型的集合

    学习到java的io流中关于序列流SequenceInputStream使用,其中把3个以上的流串联起来操作,

    使用的参数是生成运行时类型为 InputStream 对象的 Enumeration 型参数,本人对Enumeration集合

    了解较少,便记录一下:

    方法一:

        通过Vector集合来获得:

     1         InputStream is1 = new FileInputStream("d:\1.txt");
     2         InputStream is2 = new FileInputStream("d:\2.txt");
     3         InputStream is3 = new FileInputStream("d:\3.txt");
     4         OutputStream os = new FileOutputStream("d:\4.txt");
     5         
     6         //使用Vector集合获取Enumeration
     7         Vector<InputStream> v = new Vector<InputStream>();
     8         v.add(is1);
     9         v.add(is2);
    10         v.add(is3);
    11       
    13         Enumeration<InputStream> elem = v.elements();
    14         
    15         SequenceInputStream sis = new SequenceInputStream(elem);
    16         
    17         byte[] buf = new byte[1024];
    18         
    19         int len = 0;
    20         
    21         while((len = sis.read(buf)) != -1)
    22         {
    23             os.write(buf, 0, len);
    24         }                

    如果要想操作里面的元素,可以使用它的两个方法

     1      //使用Vector集合获取Enumeration
     2         Vector<InputStream> v = new Vector<InputStream>();
     3         v.add(is1);
     4         v.add(is2);
     5         v.add(is3);
     6         
     7         
     8         Enumeration<InputStream> elem = v.elements();
     9         
           10 while(elem.hasMoreElements()) 11 { 12 System.out.println(elem.nextElement()); 13 }

    方法二:

      利用List集合+Iterator+匿名内部类方法实现

      

     1         InputStream is1 = new FileInputStream("d:\1.txt");
     2         InputStream is2 = new FileInputStream("d:\2.txt");
     3         InputStream is3 = new FileInputStream("d:\3.txt");
     4         OutputStream os = new FileOutputStream("d:\4.txt");
     5         
     6         LinkedHashSet<InputStream> set = new LinkedHashSet<InputStream>();
     7         set.add(is1);
     8         set.add(is2);
     9         set.add(is3);
    10         
    11         final Iterator<InputStream> it = set.iterator();
    12         
    13         Enumeration<InputStream> en = new Enumeration<InputStream>()
    14         {
    15 
    16             @Override
    17             public boolean hasMoreElements()
    18             {
    19                 // TODO Auto-generated method stub
    20                 return it.hasNext();
    21             }
    22 
    23             @Override
    24             public InputStream nextElement()
    25             {
    26                 // TODO Auto-generated method stub
    27                 return it.next();
    28             }
    29         };
    30     
    31         SequenceInputStream sis = new SequenceInputStream(en);
    32                 
    33        byte[] buf = new byte[1024];         
               int len = 0;
             
               while((len = sis.read(buf)) != -1)
               {
                  os.write(buf, 0, len);
               }  

    如果要想操作里面的元素,也可以使用它的两个方法

     1      Enumeration<InputStream> en = new Enumeration<InputStream>()
     2         {
     3 
     4             @Override
     5             public boolean hasMoreElements()
     6             {
     7                 // TODO Auto-generated method stub
     8                 return it.hasNext();
     9             }
    10 
    11             @Override
    12             public InputStream nextElement()
    13             {
    14                 // TODO Auto-generated method stub
    15                 return it.next();
    16             }
    17         };
    18         
    19         while(en.hasMoreElements())
    20         {
    21             System.out.println(en.nextElement());
    22         }
  • 相关阅读:
    烦人的微软拼音
    android sdk manager 不能连接到https://dl-ssl.google.com
    js 截屏
    计算机的发展史
    python全栈课程内容
    内置函数
    mapfilter educe
    函数式编程->reduce
    函数式编程
    函数式编程->map
  • 原文地址:https://www.cnblogs.com/zenghi-home/p/7351601.html
Copyright © 2011-2022 走看看