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