在java集合中顶层有这样两个接口Iterator和Enumeration,这两个接口是特殊的数据操作接口。Iterator用于进行数据迭代,称为迭代器;Enumeration用于进行数据枚举,称为枚举。
1.枚举:该接口定义了可以对一个对象类集中的元素进行枚举的方法,但目前已被迭代器所替代。
在枚举中定义了如下两个方法:
boolean hasMoreElements():判断集合中是否有元素可提取,有该方法就返回true,否则返回false
Object nextElement() :将枚举中的下一个对象作为一个类属Object的引用而返回。也就是每次调用nextElement()方法获得枚举中的下一个对象。
以一个实例举例如下:
A:创建一个Vector集合
B:向集合中添加元素
C:使用vector集合的elements()方法返回集合中元素列表
D:使用枚举的hasMoreElements()方法判断集合列表中是否存在下一个元素
E:使用枚举的nexElements()方法打印出集合元素信息。
代码如下:
package yjhou.connection;
import java.util.Enumeration;
import java.util.Vector;
public class VectorTest {
public static void main(String[] args) {
//初始化一个容量大小为10的Vector对象
Vector<String> vector = new Vector<String>();
//向vector集合中添加元素
vector.add("aa");
vector.add("bb");
vector.add("cc");
vector.add("dd");
//取得Vector中的元素列表
Enumeration<String> en=vector.elements();
//循环判断集合中是否还存在下一个元素
while(en.hasMoreElements()){
//打印出集合中的下一个元素
System.out.println(en.nextElement());
}
}
}
2.迭代:
迭代器<Iterator>和枚举<Enumeration>的功能差不多,但在集合中推荐使用迭代器来进行跌代。
迭代器定义了如下三个方法:
boolean hasNext():判断集合中是否有元素可迭代;
E next():返回迭代的下一个元素;
Void remove():移除迭代器返回的最后一个元素。
举例如下:
逻辑同上:
package yjhou.connection;
import java.util.Iterator;
import java.util.Vector;
public class VectorTest {
public static void main(String[] args) {
//初始化一个容量大小为10的Vector对象
Vector<String> vector = new Vector<String>();
//向vector集合中添加元素
vector.add("aa");
vector.add("bb");
vector.add("cc");
vector.add("dd");
Iterator<String> itr = vector.iterator();//取得元素列表
while(itr.hasNext()){
String str = itr.next();
System.out.println(str);
}
}
}
迭代器与枚举之间的差异:
A:枚举接口其实是一个比迭代器接口更早期的枚举集合中的元素的接口;
B:枚举虽然过时而被Iterator替代,但Servlet还用到
C:迭代器允许调用方利用定义良好的语义在迭代期间从迭代器所指向的集合移 除元素