Enumeration和Iterator的主要区别:
(1)java中的集合类都提供了返回Iterator的方法,就是迭代器,它和Enumeration(枚举)的主要区别其实就是Iterator可以删除元素,但是Enumration却不能。
(2)还有一点要注意的就是,使 用Iterator来遍历集合时,应使用Iterator的remove()方法来删除集合中的元素,使用集合的remove()方法将抛出ConcurrentModificationException异常。(3)Enumeration 接口的功能与 Iterator 接口的功能是重复的。此外,Iterator 接口添加了一个可选的移除操作,并使用较短的方法名。新的实现应该优先考虑使用 Iterator 接口而不是Enumeration 接口。
各自用法如下:
Enumeration 接口的作用与 Iterator 接口类似,但只提供了遍历 Vector 和 Hashtable 类型集合元素的功能,不支持元素的移除操作。
例如:遍历Vector<E> v
中的元素:
- 1
- 2
- 1
- 2
性能区别:Enumeration速度是Iterator的2倍,同时占用更少的内存。但是,Iterator远远比Enumeration安全,因为其他线程不能够修改正在被iterator遍历的集合里面的对象。同时,Iterator允许调用者删除底层集合里面的元素,这对Enumeration来说是不可能的。
Iterator 接口的用法:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4