Enumeration和Iterator的区别
1.Enumeration 枚舉接口其實是一個比 Iterator 迭代器接口更早期的枚舉集合中的元素的接口。
2.Enumeration 雖然可能過時而被 Iterator 替代,但很多 servlet 還用到,所以還有學習的必要。
3.迭代器允許調用方利用定義良好的語義在迭代期間從迭代器所指向的集合移除元素。
4.方法名稱得到了改進。
枚舉(Enumeration)接口是從以前版本遺留下來。在下面依次介紹Enumeration 和每一種從以前版本遺留下來的類。?
Enumeration接口定義了可以對一個對象的類集中的元素進行枚舉(一次獲得一個)的方法。這個接口盡管沒有被擯棄,但已經被Iterator所替 代。Enumeration對新程序來說是過時的。然而它仍被幾種從以前版本遺留下來的類(例如Vector和Properties)所定義的方法使用, 被幾種其他的API類所使用以及被目前廣泛使用的應用程序所使用。
Enumeration指定下面的兩個方法:?
boolean hasMoreElements()?
Object nextElement()?
執行后,當仍有更多的元素可提取時,hasMoreElements()方法一定返回true。當所有元素都被枚舉了,則返回false。 nextElement()方法將枚舉中的下一個對象做為一個類屬 Object的引用而返回。也就是每次調用nextElement()方法獲得枚舉中的下一個對象。調用例程必須將那個對象置為包含在枚舉內的對象類型。
對于Enumeration可以以Vector為例
Vector里有很多對象,如果你要查看其中的所有對象,一個辦法是用Vector的get(int index)方法,不過這樣效率比較低,另外一個方法是用Vector的elements()方法返回一個Enumeration對象,用 Enumeration的hasMoreElements()方法向下移動并判斷當前位置是否有對象,有則用nextElement()方法返回這個對象
例如, 打印 vector v中的所有對象:?
Enumeration e = v.elements()?
while(e.hasMoreElements() )
{
System.out.println(e.nextElement());
}
另外還有個Iterator接口,和Enumeration是差不多的,不過名稱比較短,通常推薦用 Iterator
對集合進行迭代的迭代器。迭代器代替了 Java Collections Framework 中的 Enumeration。Collections 接口中定義了 iterator 方法,用于返回在此 collection 的元素上進行迭代的迭代器。
Iterator是一個集合的迭代器,通過Iterator訪問接口就就不用關心集合的實現.
Iterator接口中定義了三個方法:
1.hasNext()
是否還有下一個元素.
2.next()
返回下一個元素.
3.remove()
刪除當前元素.
只定義了簡單的三個方法,這里要注意幾點:
1)Iterator和Enumeration的區別
Iterator是用來替代Enumeration的,Enumeration中只定義了兩個方法,不具備刪除功能.
2)調用next()方法后才可以調用remove()方法,而且每次調用next()后最多只能調用一次remove()方法,否則拋出IllegalStateException異常.
對集合操作的工具類的簡單實驗
package com.hbut.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
@SuppressWarnings("unchecked")
public class TestCollections {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add("AA");
list.add("BB");
list.add("CC");
list.add("DD");
List list2=Collections.synchronizedList(list);//把非安全的集合轉為線程安全的
? ?System.out.println("------------增強for循環迭代---------------");
for(Object obj: list2){
System.out.println(obj);
}
Enumeration ea = Collections.enumeration(list2);//類似于Iterator,可以把集合進行迭代
System.out.println("-------Collections.enumeration-----------");
while (ea.hasMoreElements()) {
Object object = (Object) ea.nextElement();
System.out.println(object);
}
}
}
總結
以上是生活随笔為你收集整理的Enumeration和Iterator的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HashMap Hashtable区别
- 下一篇: Java笔试题库之编程题库 总共30道编