Java技术——Iterator和Enumeration的不同
0. Iterator和Enumeration的不同
(1)兩者的函數(shù)接口不同
Enumeration只有2個(gè)函數(shù)接口,通過Enumeration我們只能讀取集合的數(shù)據(jù),而不能對數(shù)據(jù)進(jìn)行修改。 Iterator有3個(gè)函數(shù)接口。Iterator除了能讀取集合的數(shù)據(jù)之外,也能對數(shù)據(jù)進(jìn)行刪除操作。盡管前者還沒有被棄用但是已經(jīng)被后者所代替了,Enumeration已經(jīng)過時(shí)的,之所以沒有被棄用是因?yàn)樗员粠追N從以前版本遺留下來的類(例如Vector)所定義的方法中使用。
兩者的方法總結(jié)如下,區(qū)別一目了然:
//Enumeration指定下面的兩個(gè)方法:
//當(dāng)仍有更多的元素可提取時(shí)返回true;當(dāng)所有元素都被枚舉了,則返回false
boolean hasMoreElements();
//將枚舉中的下一個(gè)對象做為一個(gè)類屬 Object的引用而返回
Object nextElement() ;//Iterator接口中定義了三個(gè)方法:
//是否還有下一個(gè)元素
hasNext();
//返回下一個(gè)元素
next();
//刪除當(dāng)前元素
remove();
//需要注意的是,調(diào)用next()方法后才可以調(diào)用remove()方法
//而且每次調(diào)用next()后最多只能調(diào)用一次remove()方法,否則拋出IllegalStateException異常Enumeration 是JDK 1.0添加的接口。使用到它的函數(shù)包括Vector、Hashtable等類, Enumeration存在的目的就是為它們提供遍歷接口,Enumeration本身并沒有支持同步,而在Vector、Hashtable實(shí)現(xiàn)Enumeration時(shí),添加了同步。
Iterator 是JDK 1.2才添加的接口,它也是為了HashMap、ArrayList等集合提供遍歷接口。Iterator是支持fail-fast機(jī)制的。
fail-fast 機(jī)制是指Java集合(Collection)中的一種錯(cuò)誤機(jī)制。當(dāng)多個(gè)線程對同一個(gè)集合的內(nèi)容進(jìn)行操作時(shí),就可能會產(chǎn)生fail-fast事件。例如:當(dāng)某一個(gè)線程A通過iterator去遍歷某集合的過程中,若該集合的內(nèi)容被其他線程所改變了;那么線程A訪問集合時(shí),就會拋出ConcurrentModificationException異常,產(chǎn)生fail-fast事件。
轉(zhuǎn)載于:https://www.cnblogs.com/qitian1/p/6461477.html
總結(jié)
以上是生活随笔為你收集整理的Java技术——Iterator和Enumeration的不同的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电影妖兽都市李嘉欣被后入,和没穿衣服,是
- 下一篇: 生日一般发多少红包