Java集合之Enumeration
2016年09月23日 16:12:10 阅读数:7383 标签: java 更多
个人分类: Java笔记
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wxc880924/article/details/52639391
Enumeration
Enumeration 接口是Iterator迭代器的“古老版本”,从JDK 1.0开始,Enumeration接口就已经存在了(Iterator从JDK 1.2才出现)。Enumeration接口只有两个方法。
boolean hasMoreElements()
如果此迭代器还有剩下的元素,则返回true
Object nextElement()
返回该迭代器的下一个元素,如果还有的话(否则抛出异常)
通过这两个方法不难发现,Enumeration接口中的方法名称难以记忆,而且没有Iterator的remove()方法。如果现在编写Java程序,应该尽量采用Iterator迭代器,而不是用Enumeration迭代器。
之所以保留Enumeration接口的原因,主要为了照顾以前那些“古老”的程序,那些程序里大量使用Enumeration接口,如果新版本的Java里直接删除Enumeration接口,将会导致那些程序全部出错。
计算机行业有一条规则:加入任何规则都必须慎之又慎,因为以后无法删除规则。
实际上,Vector(包括其子类Stack)、Hashtable两个集合类,以及另一个极少使用的BitSet,都是从JDK1.遗留下来的集合类,而Enumeration接口可用于遍历这些“古老”的集合类。对于ArrayList、HashMap等集合类,不再支持使用Enumeration迭代器。
示例:
package com.collections;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.Vector;
public class EnumerationTest {
public static void main(String[] args) {
Vector<String> v = new Vector();
v.add("Java");
v.add("C");
Hashtable table = new Hashtable();
table.put("语文", 99);
table.put("数学", 99);
Enumeration eVec= v.elements();
while(eVec.hasMoreElements()){
System.out.println(eVec.nextElement());
}
Set<Map.Entry<String,Integer>> set = table.entrySet();
Iterator<Entry<String, Integer>> iter = set.iterator();
while(iter.hasNext()){
Entry<String, Integer> m = iter.next();
System.out.println(m.getKey());
System.out.println(m.getValue());
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
Enumeration迭代器只能遍历Vector、Hashtable这种古老的集合,因此通常不要使用它,除非在某些极端情况下,不得不使用Enumeration,否则都应该选择Iterator迭代器。
Even a small star shines in the darkness.
星星再小,也会发光。