• Java技术——Iterator和Enumeration的不同


    0. IteratorEnumeration的不同

    (1)两者的函数接口不同

    Enumeration只有2个函数接口,通过Enumeration我们只能读取集合的数据,而不能对数据进行修改。 Iterator3个函数接口。Iterator除了能读取集合的数据之外,也能对数据进行删除操作。尽管前者还没有被弃用但是已经被后者所代替了,Enumeration已经过时的,之所以没有被弃用是因为它仍被几种从以前版本遗留下来的类(例如Vector)所定义的方法中使用。

    两者的方法总结如下,区别一目了然:

    //Enumeration指定下面的两个方法: 
    //当仍有更多的元素可提取时返回true;当所有元素都被枚举了,则返回false
    boolean hasMoreElements();
    //将枚举中的下一个对象做为一个类属 Object的引用而返回
    Object nextElement() ;

    //Iterator接口中定义了三个方法:
    //是否还有下一个元素
    hasNext();
    //返回下一个元素
    next();
    //删除当前元素
    remove();
    //需要注意的是,调用next()方法后才可以调用remove()方法
    //而且每次调用next()后最多只能调用一次remove()方法,否则抛出IllegalStateException异常


    (2)Iterator支持fail-fast机制,而Enumeration不支持

    Enumeration JDK 1.0添加的接口。使用到它的函数包括VectorHashtable等类, Enumeration存在的目的就是为它们提供遍历接口,Enumeration本身并没有支持同步,而在VectorHashtable实现Enumeration时,添加了同步。

    Iterator JDK 1.2才添加的接口,它也是为了HashMapArrayList等集合提供遍历接口。Iterator是支持fail-fast机制的

    fail-fast 机制是指Java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast事件。


  • 相关阅读:
    吾爱破解2018-2020优秀文章合集
    分享一个零基础入门学习Python(第2版)带课件及源码
    fiddler抓包工具详细配置方法,多图详细(转)
    浏览器提速,支持95%的国产浏览器(转)
    易语言5.92学习版
    Android Studio 之 ViewModel (转)
    一款易语言软件启动前修改(劫持DLL注入修改)【转】
    某桌球辅助登录算法分析并转本地验证
    软件虚拟机保护分析资料整理
    HttpCanary其他教程
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461477.html
Copyright © 2020-2023  润新知