枚举和迭代的功能是将一个集合对象中所有元素顺序列举出来,它们分别由Enumeration接口和Iterator接口所定义。Enumeration接口是在Java标准版1.0所定义的,而Iterator接口则是从Java标准版1.2开始定义的。两者既有相同之处,也有不同,但目前在Java语言中推荐使用Iterator接口来替换Enumeration接口。
下面详细介绍两者之不同:
Enumeration接口仅包含两个方法声明,其描述如下:
①public
boolean hasMoreElements()
②public Object
nextElement()
在实际使用中,采用nextElement()方法将一个个集合元素顺序列举出来。目前就用到的
Enumeration接口的方法仅存在于历史集合类Vector和HashTable中(所以较少使用了),如下所示:
java.util.Hashtable中的枚举方法:
①public
Enumeration elements()//获得Hashtable对象中所有值的一个枚举
②public Enumeration
keys()//获得Hashtable对象中所有键的一个枚举
java.util.Vector中的枚举方法:
①public Enumeration
elements()//获得Vector对象中所有元素的一个枚举
示例代码如下:
public class Demo
{
public
static void main(String[] args)
{
Vector v=new
Vector();
v.add("f");
v.add("b");
v.add("c");
v.add("d");
v.add("z");
v.add("a");
Enumeration
e=v.elements();
while
(e.hasMoreElements())
{
System.out.print(e.nextElement()+"
");
}
}
}
从功能上看,Iterator接口提供了Enumeration接口所所有功能,除此之外,还
提供了一个remove()方法。具体描述如下:
boolean
hasNext()
Object next()
void remove()
示例代码如下:
public class
Demo
{
public static void main(String[] args)
{
List
list=new
ArrayList();
list.add("abc");
list.add("efg");
list.add("hij");
list.add("klm");
Iterator
it=list.iterator();
while(it.hasNext())
{
System.out.print(it.next()+"
");
}
}
}