如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
|
package java.util; boolean hasMoreElements(); E nextElement(); } boolean hasNext(); E next(); void remove(); } |
(01) 函數(shù)接口不同
Enumeration 只有2個(gè)函數(shù)接口。 通過(guò)Enumeration,我們只能讀取集合的數(shù)據(jù),而不能對(duì)數(shù)據(jù)進(jìn)行修改。
Iterator 只有3個(gè)函數(shù)接口。 Iterator除了能讀取集合的數(shù)據(jù)之外,也能數(shù)據(jù)進(jìn)行刪除操作。
(02) Iterator 支持 fail-fast 機(jī)制,而 Enumeration 不支持
Enumeration 是JDK 1.0添加的接口。使用到它的函數(shù)包括Vector、Hashtable等類,這些類都是JDK 1.0中加入的,Enumeration存在的目的就是為它們提供遍歷接口。Enumeration本身并沒(méi)有支持同步,而在Vector、Hashtable實(shí)現(xiàn)Enumeration時(shí),添加了同步。
而Iterator 是JDK 1.2才添加的接口,它也是為了HashMap、ArrayList等集合提供遍歷接口。Iterator是支持fail-fast機(jī)制的:當(dāng)多個(gè)線程對(duì)同一個(gè)集合的內(nèi)容進(jìn)行操作時(shí),就可能會(huì)產(chǎn)生fail-fast事件。
iterator是快速失敗的,當(dāng)你在遍歷的時(shí)候,如果另起一個(gè)線程來(lái)修改它(集合的內(nèi)容)的結(jié)構(gòu),這時(shí)迭代器會(huì)立馬感知到,引起快速失敗,拋出ConcurrentModificationException異常。
所以說(shuō)iterator 是安全的
以上這篇詳談Enumeration接口和Iterator接口的區(qū)別就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。