比较:
1.Enumeration 枚举接口其实是一个比 Iterator 迭代器接口更早期的枚举集合中的元素的接口。
2.Enumeration 虽然可能过时而被 Iterator 替代,但很多 servlet 还用到,所以还有学习的必要。
3.迭代器允许调用方利用定义良好的语义在迭代期间从迭代器所指向的集合移除元素。
4.方法名称得到了改进。

枚举(Enumeration)接口是从以前版本遗留下来。在下面依次介绍Enumeration 和每一种从以前版本遗留下来的类。 
Enumeration接口定义了可以对一个对象的类集中的元素进行枚举(一次获得一个)的方法。这个接口尽管没有被摈弃,但已经被Iterator所替 代。Enumeration对新程序来说是过时的。然而它仍被几种从以前版本遗留下来的类(例如Vector和Properties)所定义的方法使用, 被几种其他的API类所使用以及被目前广泛使用的应用程序所使用。
Enumeration指定下面的两个方法: 
boolean hasMoreElements() 
Object nextElement() 
执行后,当仍有更多的元素可提取时,hasMoreElements()方法一定返回true。当所有元素都被枚举了,则返回false。 nextElement()方法将枚举中的下一个对象做为一个类属 Object的引用而返回。也就是每次调用nextElement()方法获得枚举中的下一个对象。调用例程必须将那个对象置为包含在枚举内的对象类型。
对于Enumeration可以以Vector为例
Vector里有很多对象,如果你要查看其中的所有对象,一个办法是用Vector的get(int index)方法,不过这样效率比较低,另外一个方法是用Vector的elements()方法返回一个Enumeration对象,用 Enumeration的hasMoreElements()方法向下移动并判断当前位置是否有对象,有则用nextElement()方法返回这个对象
例如, 打印 vector v中的所有对象: 
Enumeration e = v.elements() 
while(e.hasMoreElements() )
{
System.out.println(e.nextElement());
}
另外还有个Iterator接口,和Enumeration是差不多的,不过名称比较短,通常推荐用 Iterator
对集合进行迭代的迭代器。迭代器代替了 Java Collections Framework 中的 Enumeration。Collections 接口中定义了 iterator 方法,用于返回在此 collection 的元素上进行迭代的迭代器。

Iterator是一个集合的迭代器,通过Iterator访问接口就就不用关心集合的实现.
Iterator接口中定义了三个方法:
1.hasNext()
是否还有下一个元素.
2.next()
返回下一个元素.
3.remove()
删除当前元素.
只定义了简单的三个方法,这里要注意几点:
1)Iterator和Enumeration的区别
Iterator是用来替代Enumeration的,Enumeration中只定义了两个方法,不具备删除功能.

2)调用next()方法后才可以调用remove()方法,而且每次调用next()后最多只能调用一次remove()方法,否则抛出IllegalStateException异常.

对集合操作的工具类的简单实验

package com.hbut.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;

@SuppressWarnings("unchecked")
public class TestCollections {

public static void main(String[] args) {

List list = new ArrayList<>();
list.add("AA");
list.add("BB");
list.add("CC");
list.add("DD");

List list2=Collections.synchronizedList(list);//把非安全的集合转为线程安全的

System.out.println("------------增强for循环迭代---------------");
for(Object obj: list2){
System.out.println(obj);
}

Enumeration ea = Collections.enumeration(list2);//类似于Iterator,可以把集合进行迭代
System.out.println("-------Collections.enumeration-----------");
while (ea.hasMoreElements()) {
Object object = (Object) ea.nextElement();
System.out.println(object);

}

}

}

Enumeration和Iterator的区别相关推荐

  1. java enumerator_Enumerator迭代器和Iterator迭代器区别

    Enumerator迭代器和Iterator迭代器区别 Iterator也是一个接口,它的源码如下:package java.util; public interface Iterator { boo ...

  2. java iter是否存在_Java中ListIterator和Iterator的区别以及ListIterator的应用

    Java中ListIterator和Iterator详解与辨析 在使用java集合的时候,都需要使用Iterator.但是java集合中还有一个迭代器ListIterator,在使用List.Arra ...

  3. Java中 Iterable 和 Iterator 的区别

    1.Iterable接口 Iterable接口 (java.lang.Iterable) 是Java集合的顶级接口之一.我们首先看下这这个接口在JDK中的定义: package java.lang; ...

  4. HashMap 和 Hashtable 的 6 个区别,最后一个没几个人知道!

    HashMap 和 Hashtable 是 Java 开发程序员必须要掌握的,也是在各种 Java 面试场合中必须会问到的. 但你对这两者的区别了解有多少呢? 现在,栈长我给大家总结一下,或许有你不明 ...

  5. 【转】HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别

    转自:http://blog.csdn.net/paincupid/article/details/47746341 一.HashMap和TreeMap区别 1.HashMap是基于散列表实现的,时间 ...

  6. hashmap原理_HashMap和HashTable底层原理以及区别

    HashMap底层原理 哈希表:在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为O(1). 数据结构的物理存储结构只有两种:顺序存储结构和 ...

  7. HashMap、HashTable、ConcurrentHashMap、HashSet区别 线程安全类

    HashMap专题:HashMap的实现原理--链表散列 HashTable专题:Hashtable数据存储结构-遍历规则,Hash类型的复杂度为啥都是O(1)-源码分析 Hash,Tree数据结构时 ...

  8. HashMap HashTable和ConcurrentHashMap的区别

    HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别.主要的区别有:线程安全性,同步(synchronizatio ...

  9. HashMap 和 HashTable 区别

    来源:http://www.importnew.com/7010.html HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚 ...

最新文章

  1. WEBI 中的参数传递
  2. Hibernate关联关系映射-----双向一对多/多对一映射配置
  3. django12:form 组件/渲染标签/数据校验/钩子函数/
  4. super构造方法为什么给子类赋值_【Java学习 | Javase】super
  5. 深入浅出oracle锁原理篇
  6. 华为云社区·CSDN【寻找黑马程序员】有奖征文活动,邀你挥洒才情
  7. DeepMind新突破:雷神之锤3战场AI夺旗,团战胜率超过人类
  8. clickhouse条件函数
  9. 2-1 如何抓不同的接口(手机抓包,web网页抓包)
  10. 2021-08-22 初识过滤器
  11. 日历小程序C语言,微信小程序实现日历功能
  12. 深度解析,AI如何让创新变得更简单
  13. matlab2016安装报错(附资源)
  14. 字典(数字大小写转换器)
  15. 《程序员的自我修养》学习笔记之温故而知新
  16. 微信支付申请资料及费率
  17. html5绘制好看的时钟,利用纯html5绘制出来的一款非常漂亮的时钟
  18. 实战Perl脚本测试
  19. Python爬取起点小说并写入文档
  20. 基于comsol软件弯曲单模光纤模拟仿真

热门文章

  1. 海康威视Web端视频开发
  2. leetcode -- 129. 求根到叶子节点数字之和
  3. jQuery的引入和使用
  4. Python里面对于嵌套列表的查询
  5. 22行代码AC_Prime Number Aizu - 0009(素数筛)(解题报告)
  6. 代码分析+原理图解——棋盘覆盖问题-分治法
  7. c语言 编程显示图案*,*型图案的显示与控制(学习C语言后的编程尝试)(2)(完)...
  8. idea新建springboot后端到前端_码云开源项目:利用SpringBoot+Vue 实现留言版
  9. shell脚本详解(十二)——Here Document免交互及Expect自动化交互
  10. npoi 设定视图为分页预览_按班级分页打印,只要两步就行,不需要再筛选复制打印了...