Java中的迭代器和枚举之间的区别
Iterator和Enumeration都是游标,用于遍历和访问集合中的元素。它们都属于收集框架。在收集框架的JDK1.0和JDK.1.2版本的Iterator中添加了枚举。
枚举不能对集合进行结构更改,因为它对集合中的元素具有只读访问权限。它具有以下方法:
*hasMoreElements()
*nextElement()
另一方面,迭代器可以读取和删除集合中的元素。它具有以下方法-
*hasNext()
*nex()
*remove()
在Iterator中,我们可以在遍历集合中的元素时读取和删除元素。
它可以与集合框架的任何类一起使用。
集合中的任何更改,例如在线程迭代集合期间从集合中移除元素,则会引发并发修改异常。
它有以下方法−
*hasNext()
*next()
*remove()
*hasMoreElements()
*nextElement()
枚举示例
class EnumerationExample {
public static void main(String args[]) {
List list = new ArrayList(Arrays.asList( new String[] {"Apple", "Cat", "Dog", "Rat"}));
Vector v = new Vector(list);
delete(v, "Dog");
}
private static void delete(Vector v, String name) {
Enumeration e = v.elements();
while (e.hasMoreElements()) {
String s = (String) e.nextElement();
if (s.equals(name)) {
v.remove(name);
}
}
// Display the names
System.out.println("The names are:");
e = v.elements();
while (e.hasMoreElements()) {
// Prints elements
System.out.println(e.nextElement());
}
}
}迭代器的例子
class IteratorExample {
public static void main(String args[]) {
List list = new ArrayList(Arrays.asList( new String[] {"Apple", "Cat", "Dog", "Rat"}));
Vector v = new Vector(list);
delete(v, "Dog");
}
private static void delete(Vector v, String name) {
Iterator i = v.iterator();
while (i.hasNext()) {
String s = (String) i.next();
if (s.equals(name)) {
i.remove();
}
}
//显示名称
System.out.println("The names are:");
i = v.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}