Java中的枚举和迭代器之间的区别
Java中的枚举与迭代器
在这里,我们将看到Enumeration与Iterator有何不同?
1)枚举
枚举是Java中引入的接口。
在通过Enumeration迭代元素时,我们只能遍历旧元素,因此在这里我们将看到旧
继承的概念:早期或早期版本的Java定义了各种类,并且当时还没有一个用于存储对象和收集框架的接口,所以当收集框架来了,所以这些类被重新设计以支持收集框架。
我们可以使用elements()Enumeration接口的方法创建一个Enumeration对象。
语法:
Enumeration en = collection_object.elements();
当通过Enumeration迭代对象或元素时,我们只能执行读取操作。
枚举比Iterator快。
对于枚举,我们将使用两种方法检查现有元素并迭代下一个元素。
布尔值hasMoreElements()
目的nextElement()
枚举概念仅适用于遗留类,因此它不支持少量集合,这就是为什么它不是通用接口的原因。
通过使用枚举,我们只能获取ReadAccess,而不能执行任何删除操作。
示例
import java.util.*;
class EnumerationClass {
public static void main(String[] args) {
//创建一个Vector实例
Vector v = new Vector();
//通过使用addElement()Vector类添加少量元素
v.addElement(10);
v.addElement(20);
v.addElement(30);
v.addElement(40);
v.addElement(50);
//打印矢量列表
System.out.println(v);
//创建一个枚举对象
Enumeration en = v.elements();
//循环检查现有的更多元素
while (en.hasMoreElements()) {
Integer in = (Integer) en.nextElement();
}
System.out.println(v);
}
}输出结果
E:\Programs>javac EnumerationClass.java Note: EnumerationClass.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. E:\Programs>java EnumerationClass [10, 20, 30, 40, 50] [10, 20, 30, 40, 50]
2)迭代器
Iterator是Java中引入的接口。
在使用Iterator迭代元素时,我们可以执行读取和删除操作,而不能执行任何其他操作,例如添加对象,替换对象。
我们可以使用iterator()Iterator接口的方法创建一个Iterator对象。
语法:
Interface_name object_name = Collection_class.Iterator_method
迭代器比枚举慢。
对于Iterator,我们将使用两种方法来检查现有元素并迭代下一个元素。
布尔值hasNext()
目的next()
迭代器概念不仅适用于遗留类,而且还支持非遗留类,因此这就是通用接口的原因。
示例
import java.util.*;
class IteratorClass {
public static void main(String[] args) {
//创建一个Set接口对象
Set set = new HashSet();
//通过使用add()方法在集合中添加一些元素
set.add("Java");
set.add("Python");
set.add("C++");
set.add("Ruby");
set.add("C");
//创建Iterator接口的对象
Iterator itr = set.iterator();
//遍历元素的循环
while (itr.hasNext()) {
String str = (String) itr.next();
if (str.equals("C"))
itr.remove();
}
//Set接口的显示元素
System.out.println("The final list of Iterator :" + set);
}
}输出结果
E:\Programs>javac IteratorClass.java Note: IteratorClass.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. E:\Programs>java IteratorClass The final list of Iterator :[Ruby, Python, C++, Java]