`
aawty
  • 浏览: 32598 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Iterator和Enumeration 区别 fail-fast 机制

阅读更多

   “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机制1

    Fail-Fast机制是一种Java集合框架中的设计策略,主要用于在多线程环境下确保程序的正确性和稳定性。当一个线程在遍历集合时,如果另一个线程对集合进行了结构上的修改,Fail-Fast机制会立即抛出`...

    老生常谈java中的fail-fast机制

    Java中的Fail-Fast机制详解 Java中的Fail-Fast机制是一种错误检测机制,当多个线程对集合进行结构上的改变操作时,有可能会产生Fail-Fast机制。这种机制是Java集合框架的一部分,可以帮助检测并发修改引发的错误。 ...

    fail-safe fail-fast知多少

    理解Fail-fast和Fail-safe迭代器的区别对于编写健壮的多线程程序至关重要。Fail-fast迭代器提供了快速的错误检测,防止意外的数据一致性问题,但不适用于并发修改的场景。而Fail-safe迭代器则允许在遍历过程中安全地...

    解析Java的迭代器中的fast-fail错误检测机制

    fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所...

    Iterator与fast-fail机制.pdf

    使用迭代器的另一个关键特性是快速失败(Fast-Fail)机制。当多个线程同时遍历一个集合并修改集合状态时,如果没有适当的同步控制,可能会导致迭代器抛出ConcurrentModificationException。这是因为迭代器在创建时会...

    一个Iterator的实例1---马克-to-win java视频

    一个Iterator的实例1---马克-to-win java视频迭代器的详细描述

    一个Iterator的实例2---马克-to-win java视频

    一个Iterator的实例2---马克-to-win java视频的详细描述

    分析-Iterator-base12与-Container-base12

    分析-Iterator-base12与-Container-base12

    c++ 的array源码分析和reverse-iterator和-Array-const-iterator类

    c++ 的array源码分析和reverse-iterator和-Array-const-iterator类

    Java面试题-基础-集合有关的知名厂商面试题和基础复习

    掌握 Iterator 的 fail-fast 、fail-safe 机制 ArrayList() 会使用长度为零的数组 ArrayList(int initialCapacity) 会使用指定容量的数组 public ArrayList(Collection<? extends E> c) 会使用 c 的大小作为数组...

    详谈Enumeration接口和Iterator接口的区别

    在Java编程语言中,`...综上所述,`Enumeration`和`Iterator`接口在功能、并发安全性以及历史背景方面都有明显的区别。在新的开发项目中,通常选择使用`Iterator`,以利用其提供的更强大功能和更现代的编程模型。

    java-util-iterator.pdf java-util-iterator.pdf

    这种语法糖不仅使得代码更加简洁易读,而且自动处理了获取`Iterator`和遍历元素的过程。 ### 五、不同集合类的Iterator实现 不同类型的集合类通常会有自己的`Iterator`实现。例如: - `ArrayList`可能会返回一个...

    Java Collections中的Fail Fast机制

    ### Java Collections中的Fail Fast机制详解 #### 一、概述 在Java编程中,**Fail Fast**机制是一项重要的设计原则,特别是在处理集合时尤为关键。它主要用于确保数据结构的一致性和完整性,通过快速检测并报告...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    Java集合详解3:Iterator,fail-fast机制与比较器 Java集合详解4:HashMap和HashTable Java集合详解5:深入理解LinkedHashMap和LRU缓存 Java集合详解6:TreeMap和红黑树 Java集合详解7:HashSet,TreeSet与...

    PyPI 官网下载 | period_iterator-1.2.1-py3-none-any.whl

    PyPI(Python Package Index)是Python开发者最常用的一个资源库,它提供了无数的开源Python库,供全球的开发人员免费下载和使用。在PyPI上,我们发现了`period_iterator-1.2.1-py3-none-any.whl`这个资源,它是...

    Java集合类面试题.docx

    8. **Enumeration和Iterator接口的区别?** Enumeration仅存在于早期的Java版本,用于遍历Vector和Hashtable。Iterator提供更强大的功能,如删除元素,且在集合框架中更为普遍。 9. **为何没有像Iterator.add()...

    java-集合-知识点汇总

    fail-fast机制将抛出异常,而fail-safe机制将忽略修改。 * transient关键字:在ArrayList中,elementData字段使用transient关键字修饰,以避免序列化时将elementData字段序列化。 * readObject和writeObject方法:在...

    Java集合面试问题

    - **Fail-safe**:某些集合如`ConcurrentHashMap`和`CopyOnWriteArrayList`提供了一种线程安全的遍历机制,即使遍历过程中集合被修改也不会抛出异常。 - 实现机制:通过创建集合的副本进行遍历,这样就不会受到集合...

Global site tag (gtag.js) - Google Analytics