創建一個Enumeration集合:
今天看到老師上課用到了下述的第二種方法,然後也提到了第一種方法,我感覺還是有必要記錄一下,以後還會記錄更過。
說明: 我們知道Enumeration是一個接口,但是往往我們在開發中,要使用API中某個類的方法或構造方法的時候,要傳遞一個Enumeration類型的集合,而它唯一的一個子接口NamingEnumeration<T>也是一個接口,這時候,我們可以通過如下的方法去獲得相應的Enumeration集合。
方法一:通過Vector集合來獲得(但是Vector本身不是一很高效的集合)。
Step1: 首先創建一個Vector類型集合,將欲放在Enumeration中的元素先一個個的添加到Vector集合中來,添加可以使用add(
E o)
將指定元素追加到此集合的末尾,當然還可以使用其他的重載的add方法。
Step2: 然後在使用Vector集合中的elements()
返回此集合的枚舉類型集合。
- Vector<String> v = new Vector<String>();
- v.add("A");
- v.add("B");
- v.add("C");
- Enumeration<String> en = v.elements();
Step3: 然後就可以它的兩個方法去操作裏面的元素了。
- Vector<String> v = new Vector<String>();
- v.add("A");
- v.add("B");
- v.add("C");
- Enumeration<String> en = v.elements();
- while(en.hasMoreElements())
- {
- System.out.println(en.nextElement());
- }
方法二:利用List集合+Iterator+匿名內部類方法實現(該方式看是複雜,但是比較靈活,有點技術含量)
Step1: 首先創建一個ArrayList集合,將欲放在Enumeration中的元素先一個個的添加到ArrayList集合中來,add(
E o)
將指定的元素追加到此列表的尾部,當然還可以使用其他的重載的add方法。
- ArrayList<String> list = new ArrayList<String>();
- list.add("A");
- list.add("B");
- list.add("C");
Step2: 拿到ArrayList的Iterator迭代器,並將Iterator修飾爲final,這裏使用final修飾,是爲後面的匿名內部類方便訪問提供條件。
final Iterator<String> it = list.iterator();
Step3: 創建一個Enumeration集合,但是要注意,Enumeration是一個接口,是不能直接實例化對象的,那麼只能通過匿名內部類的方式去構建出它的子類對象,因爲匿名內部類返回的是該類的子類對象,但是必須實現該類的所有方法,這裏要實現Enumeration中的兩個抽象方法,即hasMoreElements()和nextElements(),所以這裏要和上述的迭代器關聯實現兩個方法,就可以創建一個Enumeration集合了,而且裏面是理所當然的包含了ArrayList中的所有元素了。
- Enumeration<String> en = new Enumeration<String>()
- {
- @Override
- public boolean hasMoreElements()
- {
- return it.hasNext();
- }
- @Override
- public String nextElement()
- {
- return it.next();
- }
- };
- while(en.hasMoreElements())
- {
- System.out.println(en.nextElement());
- }
-