0. Iterator和Enumeration的不同

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

Enumeration只有2个函数接口,通过Enumeration我们只能读取集合的数据,而不能对数据进行修改。 Iterator有3个函数接口。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添加的接口。使用到它的函数包括Vector、Hashtable等类, Enumeration存在的目的就是为它们提供遍历接口,Enumeration本身并没有支持同步,而在Vector、Hashtable实现Enumeration时,添加了同步。

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

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

转载于:https://www.cnblogs.com/qitian1/p/6461477.html

Java技术——Iterator和Enumeration的不同相关推荐

  1. java迭代器cas,java提高篇(三十)-Iterator - Java 技术驿站-Java 技术驿站

    迭代对于我们搞Java的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. Iterator iterator = list.iterator(); while(iterator ...

  2. java技术面试之面试题大全

    转载自:http://blog.csdn.net/lijizhi19950123/article/details/77679489 Java 面试知识点总结 本篇文章会对面试中常遇到的Java技术点进 ...

  3. Java技术光明顶,这些阿里面试题你了解多少,你的功力有多深厚

    Java技术光明顶,这些阿里面试题你了解多少,你的功力有多深厚 前言: 我又来了,今天还是给大家分享一些阿里的面试题,为什么最近总是给大家推荐面试题呢,因为希望在金九银十这个跳槽季大家都可以拿到自己心 ...

  4. java基础总结-java技术栈快速复习

    java基础 java基础概念 java概述和语言背景 java语言是没有sun公司(Stanford University Network:斯坦福大学网络)在1995年推出的计算机语言 java之父 ...

  5. 1269道Java技术答疑,阿里技术专家帮你Java技术进阶

    云栖社区邀请到6位Java技术专家帮开发者答疑解惑,其中精华的1269道问答已经整理出来,供大家学习! 如有Java相关问题,请向专家提问https://yq.aliyun.com/promotion ...

  6. java的 iterator方法_java iterator方法

    展开全部 iterator方法是JDK提供的迭代32313133353236313431303231363533e4b893e5b19e31333337393536接口进行Java集合的迭代. Ite ...

  7. Java中Iterator类的详细介绍

    迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节. 概述 Java集合框架的集合类,我们有时候称之为容器.容器的种类有很多种,比如ArrayList.Li ...

  8. java 办公,中文JAVA技术网

    873人气指数 0PageRank 0百度权重 0AlexaRank 2013-01-01收录日期 2019-08-15更新日期 服务器IP:218.240.155.5 网站描述:中文JAVA技术网 ...

  9. java旅游网站毕业论文,基于JAVA技术的旅游网站的开发.doc

    摘要: 这次毕设主要是为了实现基于JAVA技术的旅游网站的开发,方便人们近距离的出行游玩.网站的开发过程中用到了很多方法技术,最主要的是JAVA技术,用于编写后台的功能实现代码:框架采用的是Sprin ...

最新文章

  1. 【Socket网络编程】2.sockaddr 和 sockaddr_in
  2. clang编译c语言,clang没有编译c程序?
  3. 前端学习(3104):react-hello-虚拟dom和真实dom
  4. php node.js django,Vue.js和Django搭建前后端分离项目示例详解
  5. 一个很炫的图片/相册浏览控件(Flex实现)
  6. Oracle创建视图的一个问题
  7. [BJOI2019]奥术神杖(分数规划+AC自动机+DP)
  8. java dom4j 读取 xml_java使用dom4j读取xml示例
  9. [Ubuntu Error]无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
  10. JS调用安卓手机摄像头扫描二维码
  11. [免费专栏] Android安全之绕过SSL Pinning抓HTTPS数据
  12. 胡崧讲Dreamweaver视频教程
  13. LVS 就是这么简单(数字后端物理验证篇)
  14. jfinal,jxl导出excel遇到的异常
  15. iphone数据传输已取消怎么办_iPhone停用怎么办?如何解除iPhone已停用
  16. 阿里面试,问了我乐观锁、悲观锁、AQS、sync和Lock,这个回答让我拿了offer
  17. AD 原理图层次化画图
  18. MacOS装载APFS移动硬盘出现49180错误
  19. UVM通信篇之一:TLM通信概论
  20. MCE | HIV 衣壳蛋白有望成为 HIV 治疗新靶标

热门文章

  1. 端口映射问题:Bad Request This combination of host and port requires TLS.
  2. 大数据学习01——配置虚拟机节点相关网络
  3. 2022-2028年中国汽轮发电机行业市场深度分析及发展趋势分析报告
  4. 2022-2028年中国NFT行业市场研究及前瞻分析报告
  5. Redis学习之路(一)--下载安装redis
  6. 遇事不责怪别人,换位思考能成全更好的自己
  7. Linux下Flash-LED的处理
  8. 使用Auto TensorCore CodeGen优化Matmul
  9. Nucleus-SE迁移:未实现的设施和兼容性
  10. OpenCV读写视频文件解析(二)