详谈Enumeration接口和Iterator接口的区别
如下所示:
package java.util; public interface Enumeration<E> { boolean hasMoreElements(); E nextElement(); } public interface Iterator<E> { boolean hasNext(); E next(); void remove(); }
(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事件。
iterator是快速失败的,当你在遍历的时候,如果另起一个线程来修改它(集合的内容)的结构,这时迭代器会立马感知到,引起快速失败,抛出ConcurrentModificationException异常。
所以说iterator 是安全的
以上这篇详谈Enumeration接口和Iterator接口的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
java Iterator接口和LIstIterator接口分析
java Iterator接口和LIstIterator接口分析 目录 1.Iterator接口 2.ListIterator 3.Iterator和ListIterator的区别 正文 在继续看ArrayList源码之前,先了解Iterator接口和ListIterator接口,下篇文章详细讲解ArrayList是如何实现它们的. 我们知道,接口只是一种规范,当继承接口并实现其中的方法时,要遵循接口对方法的说明. 1.Iterator接口 Iterator接口取代了Java集合框架中的Enu
-
使用Enumeration和Iterator遍历集合类详解
前言在数据库连接池分析的代码实例中,看到其中使用Enumeration来遍历Vector集合.后来就找了一些资料查看都有哪些方法可以遍历集合类,在网上找到了如下的使用Enumeration和Iterator遍历集合类的实例.不过这个实例中提到了Enumeration比Iterator的效率更高,其实并不是这样子的,该实例是的时间测试太片面了, 因为数据量太少.随着数据两的增加,两者之间的效率越来越接近,而不会出现倍数的比例.而且现在普遍都使用Iterator来遍历集合类,只有特别明确声明必须使用
-
详谈Enumeration接口和Iterator接口的区别
如下所示: package java.util; public interface Enumeration<E> { boolean hasMoreElements(); E nextElement(); } public interface Iterator<E> { boolean hasNext(); E next(); void remove(); } (01) 函数接口不同 Enumeration 只有2个函数接口. 通过Enumeration,我们只能读取集合的数据,而
-
Java List接口与Iterator接口及foreach循环使用解析
目录 List接口 ArrayList集合 LinkedList集合 Iterator接口 foreach循环 List接口 List接口继承Collection接口,属于单列集合,在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中通过索引来访问集合中的指定元素,元素是顺序存储的,即元素的存入顺序和取出顺序一致. ArrayList集合 ArrayList是List接口的一个实现类,在ArrayList内部封装了一个长度可变的数组对象. package 集合类;
-
java Iterator接口和LIstIterator接口分析
java Iterator接口和LIstIterator接口分析 目录 1.Iterator接口 2.ListIterator 3.Iterator和ListIterator的区别 正文 在继续看ArrayList源码之前,先了解Iterator接口和ListIterator接口,下篇文章详细讲解ArrayList是如何实现它们的. 我们知道,接口只是一种规范,当继承接口并实现其中的方法时,要遵循接口对方法的说明. 1.Iterator接口 Iterator接口取代了Java集合框架中的Enu
-
Java Iterator接口实现代码解析
Iterator接口 源代码 package java.util; import java.util.function.Consumer; /** * An iterator over a collection. {@code Iterator} takes the place of * {@link Enumeration} in the Java Collections Framework. Iterators * differ from enumerations in two ways:
-
ES6 Iterator接口和for...of循环用法分析
本文实例讲述了ES6 Iterator接口和for...of循环用法.分享给大家供大家参考,具体如下: <script> // 数组已经帮我们内置这个Iterator接口 let arr = ['hello','world']; let map = arr[Symbol.iterator](); // 数组直接调用iterator接口,返回一个对象map console.log(map.next()); // {value: "hello", done: false} do
-
使用axios请求接口,几种content-type的区别详解
axios的使用 安装(一般使用框架的话, 脚手架都集成了) $ npm install axios 请求示例 // POST axios.post('/user', { firstName: 'Fred', lastName: 'Flintstone' }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); }); // GET axios.ge
-
Java Iterator接口遍历单列集合迭代器原理详解
这篇文章主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Iterator接口概述 在程序开发中,经常需要遍历集合中的所有元素.针对这种需求,JDK专门提供了一个接口java.util.Iterator . Iterator 接口也是Java集合中的一员,但它与 Collection . Map 接口有所不同,Collection 接口与 Map 接口主要用于存储元素,而 Iter
-
java中Statement 与 PreparedStatement接口之间的关系和区别
Statement 和 PreparedStatement之间的关系和区别. 关系:PreparedStatement继承自Statement,都是接口 区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高 详解: 1.PreparedStatement:表示预编译的 SQL 语句的对象. 接口:public interface PreparedStatement extends Statement之间的继承关系 SQL 语句被预编译
-
JAVA Iterator接口与增强for循环的实现
1 Iterator迭代器 1.1 Iterator接口 java.util.Iterator接口也是Java集合中的一员: Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器. public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素. 迭代:Collection集合元素的通用获取方式.在取元素之前先判断集合中有没有元素.如果有,就把这个元素取出来:继续判断,如果还有就再取出来:就这样一直把集
随机推荐
- Using Django with GAE Python 后台抓取多个网站的页面全文
- iOS 防止按钮多次点击造成多次响应的方法
- php简单防盗链验证实现方法 原创
- Python性能提升之延迟初始化
- 使用Linux shell脚本实现FTP定时执行批量下载指定文件
- C#实现通过模板自动创建Word文档的方法
- android:照片涂画功能实现过程及原理详解
- Jquery图片滚动与幻灯片的实例代码
- ASP.NET防止页面刷新的两种解决方法小结
- Android开发方式之Java+html+javascript混合开发
- js 提取class相同的节点集合
- jQuery中parent()方法用法实例
- 远程镜像与备份SVN服务器的方法小结第1/2页
- 二级连动菜单
- IIS6设置网站经常遇到的问题总结
- C#窗体编程不显示最小化、最大化、关闭按钮的方法
- 浅谈C#各种数组直接的数据复制/转换
- 提升PHP性能的21种方法介绍
- JS获取浏览器地址栏的多个参数值的任意值实例代码
- js中自定义react数据验证组件实例详解