“Iterator(迭代器)” 或 “Enumeration(枚举类)” 都可以遍历集合,Iterator和Enumeration都是接口,主要区别在于接口数、fail-fast机制:
(01) 函数接口不同:Enumeration只有2个函数接口。通过Enumeration,我们只能读取集合的数据,而不能对数据进行修改。
Iterator只有3个函数接口。Iterator除了能读取集合的数据之外,也能数据进行删除操作。
(02) Iterator支持fail-fast机制,而Enumeration不支持。Enumeration 是JDK 1.0添加的接口。使用到它的函数包括Vector、Hashtable等类,这些类都是JDK 1.0中加入的,Enumeration存在的目的就是为它们提供遍历接口。Enumeration本身并没有支持同步,而在Vector、Hashtable实现Enumeration时,添加了同步。
而Iterator 是JDK 1.2才添加的接口,它也是为了HashMap、ArrayList等集合提供遍历接口。Iterator是支持fail-fast机制的:当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。
fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。
例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast事件。
fail-fast机制,是一种错误检测机制。它只能被用来检测错误,因为JDK并不保证fail-fast机制一定会发生。
相关推荐
Fail-Fast机制是一种Java集合框架中的设计策略,主要用于在多线程环境下确保程序的正确性和稳定性。当一个线程在遍历集合时,如果另一个线程对集合进行了结构上的修改,Fail-Fast机制会立即抛出`...
Java中的Fail-Fast机制详解 Java中的Fail-Fast机制是一种错误检测机制,当多个线程对集合进行结构上的改变操作时,有可能会产生Fail-Fast机制。这种机制是Java集合框架的一部分,可以帮助检测并发修改引发的错误。 ...
理解Fail-fast和Fail-safe迭代器的区别对于编写健壮的多线程程序至关重要。Fail-fast迭代器提供了快速的错误检测,防止意外的数据一致性问题,但不适用于并发修改的场景。而Fail-safe迭代器则允许在遍历过程中安全地...
fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所...
使用迭代器的另一个关键特性是快速失败(Fast-Fail)机制。当多个线程同时遍历一个集合并修改集合状态时,如果没有适当的同步控制,可能会导致迭代器抛出ConcurrentModificationException。这是因为迭代器在创建时会...
一个Iterator的实例1---马克-to-win java视频迭代器的详细描述
一个Iterator的实例2---马克-to-win java视频的详细描述
分析-Iterator-base12与-Container-base12
c++ 的array源码分析和reverse-iterator和-Array-const-iterator类
掌握 Iterator 的 fail-fast 、fail-safe 机制 ArrayList() 会使用长度为零的数组 ArrayList(int initialCapacity) 会使用指定容量的数组 public ArrayList(Collection<? extends E> c) 会使用 c 的大小作为数组...
在Java编程语言中,`...综上所述,`Enumeration`和`Iterator`接口在功能、并发安全性以及历史背景方面都有明显的区别。在新的开发项目中,通常选择使用`Iterator`,以利用其提供的更强大功能和更现代的编程模型。
这种语法糖不仅使得代码更加简洁易读,而且自动处理了获取`Iterator`和遍历元素的过程。 ### 五、不同集合类的Iterator实现 不同类型的集合类通常会有自己的`Iterator`实现。例如: - `ArrayList`可能会返回一个...
### Java Collections中的Fail Fast机制详解 #### 一、概述 在Java编程中,**Fail Fast**机制是一项重要的设计原则,特别是在处理集合时尤为关键。它主要用于确保数据结构的一致性和完整性,通过快速检测并报告...
Java集合详解3:Iterator,fail-fast机制与比较器 Java集合详解4:HashMap和HashTable Java集合详解5:深入理解LinkedHashMap和LRU缓存 Java集合详解6:TreeMap和红黑树 Java集合详解7:HashSet,TreeSet与...
PyPI(Python Package Index)是Python开发者最常用的一个资源库,它提供了无数的开源Python库,供全球的开发人员免费下载和使用。在PyPI上,我们发现了`period_iterator-1.2.1-py3-none-any.whl`这个资源,它是...
8. **Enumeration和Iterator接口的区别?** Enumeration仅存在于早期的Java版本,用于遍历Vector和Hashtable。Iterator提供更强大的功能,如删除元素,且在集合框架中更为普遍。 9. **为何没有像Iterator.add()...
fail-fast机制将抛出异常,而fail-safe机制将忽略修改。 * transient关键字:在ArrayList中,elementData字段使用transient关键字修饰,以避免序列化时将elementData字段序列化。 * readObject和writeObject方法:在...
- **Fail-safe**:某些集合如`ConcurrentHashMap`和`CopyOnWriteArrayList`提供了一种线程安全的遍历机制,即使遍历过程中集合被修改也不会抛出异常。 - 实现机制:通过创建集合的副本进行遍历,这样就不会受到集合...