詳談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)文章
Idea如何配置Maven才能優(yōu)先從本地倉庫獲取依賴(親測方法有效)
對于Idea怎么配置Maven才能優(yōu)先從本地倉庫獲取依賴,網(wǎng)上說法有很多種,都不太靠譜,最終都沒有效果,最好的解決方法是通過修改maven配置文件settings.xml,本文給大家介紹的非常詳細,需要的朋友參考下吧2023-10-10
Mybatis注解方式完成輸入?yún)?shù)為list的SQL語句拼接方式
這篇文章主要介紹了Mybatis注解方式完成輸入?yún)?shù)為list的SQL語句拼接方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
SpringBoot中@Value獲取值和@ConfigurationProperties獲取值用法及比較
在Spring Boot中,@Value注解是一個非常有用的特性,它允許我們將外部的配置注入到我們的Bean中,@ConfigurationProperties用于將配置文件中的屬性綁定到 Java Bean 上,本文介紹了@Value獲取值和@ConfigurationProperties獲取值用法及比較,需要的朋友可以參考下2024-08-08
Spring Boot使用Druid進行維度的統(tǒng)計和監(jiān)控
這篇文章主要介紹了Spring Boot使用Druid進行維度的統(tǒng)計和監(jiān)控,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-04-04

