2014-02-20 66 views
-1

任何人都可以確認Enumeration只適用於遺留集合框架類嗎?枚舉是否只在傳統集合框架類中工作?

我試圖使用Enumeration檢索VectorStack的元素,它的工作原理。

Stack<Integer> stack=new Stack<Integer>(); 
    stack.add(5); 
    stack.add(9); 
    System.out.println(stack); 
    Enumeration<Integer> enumeration=stack.elements(); 
    while (enumeration.hasMoreElements()) { 
     Integer integer = (Integer) enumeration.nextElement(); 
     System.out.println(integer); 
    } 

但是當我在Set上嘗試這個時,它不起作用。所以我很困惑Enumeration是否只適用於傳統的集合框架類,或者Enumeration適用於任何類。

+1

向我們展示失敗的代碼。 –

+1

你是什麼意思,它不工作,' –

+4

「注意:這個接口的功能被Iterator接口複製,另外,Iterator增加了一個可選的刪除操作,並且有更短的方法名,新的實現應該考慮使用Iterator而不是枚舉「。閱讀文檔是根本。 –

回答

1

Enumeartion不僅適用於遺留集合框架類,還適用於其他集合框架類。 與堆棧或Vector工作時,我們可以直接列舉這樣

Stack<Integer> stack=new Stack<Integer>(); 
     stack.add(5); 
     stack.add(9); 
     System.out.println(stack); 
     Enumeration<Integer> enumeration=stack.elements(); 
     while (enumeration.hasMoreElements()) { 
      Integer integer = (Integer) enumeration.nextElement(); 
      System.out.println(integer); 
     } 
     Vector<Integer> vector=new Vector<Integer>(); 
     vector.add(5); 
     vector.add(9); 
     System.out.println(vector); 
     Enumeration<Integer> enumeration2=vector.elements(); 
     while (enumeration2.hasMoreElements()) { 
      Integer integer = (Integer) enumeration2.nextElement(); 
      System.out.println(integer); 
     } 

,但是當我們與集合框架類一樣的HashSet,ArrayList的等合作,我們可以通過將收集的對象作爲參數傳遞給矢量枚舉或堆棧構造函數。請參閱以下代碼

Set<Integer> set=new HashSet<Integer>(); 
     set.add(6); 
     set.add(7); 
     System.out.println(set); 
     Enumeration<Integer> enumeration3=new Vector(set).elements(); 
     while (enumeration3.hasMoreElements()) { 
      Integer integer = (Integer) enumeration3.nextElement(); 
      System.out.println(integer); 
     } 
     List<Integer> list=new ArrayList<Integer>(); 
     list.add(12); 
     list.add(23); 
     System.out.println(list); 
     Enumeration<Integer> enumeration4=new Vector(list).elements(); 
     while (enumeration4.hasMoreElements()) { 
      Integer integer = (Integer) enumeration4.nextElement(); 
      System.out.println(integer); 
     } 
+1

**這與'Set'上的'Enumeration'無關**。如何將元素放入'Vector'中並不重要,但這就是這是'Vector'對象上的一個'Enumeration'。 –

1

當我嘗試這一套,然後它不工作

假設你的意思java.util.Set,該接口沒有返回一個Enumeration對象的方法,所以這是毫不奇怪,它不會工作。

我也假設你既然在談論傳統軟件,你就知道IteratorIterable


在這裏做了很多假設。

+0

我可以改正/改進什麼? –

2

更近期的Java集合擁有自己的迭代器,可以執行類似的工作。你也有類似foreach循環的東西來使事情變得更簡單。

+0

@rajeev問一個更清晰的問題,然後...... –