詳談Enumeration接口和Iterator接口的區(qū)別
如下所示:
package java.util; public interface Enumeration<E> { boolean hasMoreElements(); E nextElement(); } public interface Iterator<E> { 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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot+Ant Design Vue實現(xiàn)數(shù)據(jù)導(dǎo)出功能方式
這篇文章主要介紹了SpringBoot+Ant Design Vue實現(xiàn)數(shù)據(jù)導(dǎo)出功能方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01springboot實現(xiàn)SSE(Server?Sent?Event)的示例代碼
SSE?全稱Server?Sent?Event,直譯一下就是服務(wù)器發(fā)送事件,本文主要為大家詳細介紹了springboot實現(xiàn)SSE的相關(guān)知識,需要的可以參考一下2024-04-04談?wù)凷pring Boot 數(shù)據(jù)源加載及其多數(shù)據(jù)源簡單實現(xiàn)(小結(jié))
這篇文章主要介紹了談?wù)凷pring Boot 數(shù)據(jù)源加載及其多數(shù)據(jù)源簡單實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04SpringBoot2.0整合Shiro框架實現(xiàn)用戶權(quán)限管理的示例
這篇文章主要介紹了SpringBoot2.0整合Shiro框架實現(xiàn)用戶權(quán)限管理的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08在Java Spring框架中使用的設(shè)計模式有哪些
面試中常會被問道Spring框架使用了哪些設(shè)計模式?關(guān)于這個問題本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09