1.枚举(Enumeration)接口
枚举接口是从以前版本遗留下来的。枚举接口定义了可以对一个对象的类集中的元素进行枚举(一次获得一个)的方法。这个接口尽管没有被摒弃,但已经被Iterator所替代。枚举对新程序来说是过时的,然而它仍被几种从以前版本遗留下来的类(例如Vector,Hashtable和Properties)所定义的方法使用,被几种其它的API类及被目前广泛使用的应用程序所使用。
Enumeration指定下面的两个方法:
- boolean hasMoreElement();
- Object nextElement();
对于Enumeration可以以Vector为例。Vector里面有很多对象,如果你想查看其中的所有对象,一个办法是用Vector的get(int index)方法,不过这样效率比较低,另外一个方法是用Vector的elements()方法返回一个Enumeration对象,用Enumeration的hasMore()方法向下移并判断当前位置是否有对象,有则用nextElement()方法返回这个对象。
例如,打印vector v中的所有对象:
Enumeration e=v.element();
while(e.hasMoreElement()){
System.out.print(e.nextElement());
}
2.迭代器(Iterator)接口
另外还有个Iterator接口,与Enumeration差不多,不过名称比较短,通常推荐用Iterator对象Collection集合进行迭代。迭代器代替了Java Collections Framework中的Enumeration。Collection接口中定义了iteraor()方法,用于返回在此collection的元素上进行迭代的迭代器。
迭代器提供了如下3个方法供Collection类的实例使用:
boolean hasNext();
Object next();
void remove();
例如,要输出Vector 对象 vect 的迭代器,可以这样写:
Iterator it=vect.iterator();
while(it.hasNext()){
Object obj=it.next();
}
从使用方法来看两者类似,新的实现应该优先考虑Iterator接口。