Java中如何獲取Enumeration集合

創建一個Enumeration集合:

今天看到老師上課用到了下述的第二種方法,然後也提到了第一種方法,我感覺還是有必要記錄一下,以後還會記錄更過。

 

說明: 我們知道Enumeration是一個接口,但是往往我們在開發中,要使用API中某個類的方法或構造方法的時候,要傳遞一個Enumeration類型的集合,而它唯一的一個子接口NamingEnumeration<T>也是一個接口,這時候,我們可以通過如下的方法去獲得相應的Enumeration集合。

方法一:通過Vector集合來獲得(但是Vector本身不是一很高效的集合)。

Step1: 首先創建一個Vector類型集合,將欲放在Enumeration中的元素先一個個的添加到Vector集合中來,添加可以使用add(E o) 將指定元素追加到此集合的末尾,當然還可以使用其他的重載的add方法。

Step2: 然後在使用Vector集合中的elements() 返回此集合的枚舉類型集合。

                 

  1. Vector<String> v = new Vector<String>();  
  2.                   v.add("A");  
  3.                   v.add("B");  
  4.                   v.add("C");  
  5.                  Enumeration<String> en = v.elements();  

Step3: 然後就可以它的兩個方法去操作裏面的元素了。

  1. Vector<String> v = new Vector<String>();  
  2.                  v.add("A");  
  3.                  v.add("B");  
  4.                  v.add("C");  
  5.                 Enumeration<String> en =  v.elements();  
  6.                 while(en.hasMoreElements())  
  7.                 {  
  8.                         System.out.println(en.nextElement());  
  9.                 }  


方法二:利用List集合+Iterator+匿名內部類方法實現(該方式看是複雜,但是比較靈活,有點技術含量)

Step1: 首先創建一個ArrayList集合,將欲放在Enumeration中的元素先一個個的添加到ArrayList集合中來,add(E o) 將指定的元素追加到此列表的尾部,當然還可以使用其他的重載的add方法。

  1. ArrayList<String> list = new ArrayList<String>();  
  2.                  list.add("A");  
  3.                  list.add("B");  
  4.                  list.add("C");  


Step2: 拿到ArrayList的Iterator迭代器,並將Iterator修飾爲final,這裏使用final修飾,是爲後面的匿名內部類方便訪問提供條件。

         final Iterator<String> it = list.iterator();

Step3: 創建一個Enumeration集合,但是要注意,Enumeration是一個接口,是不能直接實例化對象的,那麼只能通過匿名內部類的方式去構建出它的子類對象,因爲匿名內部類返回的是該類的子類對象,但是必須實現該類的所有方法,這裏要實現Enumeration中的兩個抽象方法,即hasMoreElements()和nextElements(),所以這裏要和上述的迭代器關聯實現兩個方法,就可以創建一個Enumeration集合了,而且裏面是理所當然的包含了ArrayList中的所有元素了。

  1. Enumeration<String> en = new Enumeration<String>()  
  2.                  {  
  3.                                          @Override  
  4.                                       public boolean hasMoreElements()  
  5.                                        {  
  6.                                             return it.hasNext();  
  7.                                        }  
  8.                                 @Override  
  9.                                     public String nextElement()  
  10.                                     {  
  11.                                              return it.next();  
  12.                                     }  
  13.                  };  
  14.            while(en.hasMoreElements())  
  15.            {  
  16.                    System.out.println(en.nextElement());  
  17.            }  
  18.    
  19.   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章