📜  Java迭代器和枚举的区别和例子

📅  最后修改于: 2021-09-10 02:57:06             🧑  作者: Mango

Iterator 它是一个通用迭代器,因为我们可以将它应用于任何 Collection 对象。通过使用 Iterator,我们可以执行读取和删除操作。它是 Enumeration 的改进版本,具有元素的可移除能力的附加功能。

每当我们想要枚举所有 Collection 框架实现的接口(如 Set、List、Queue、Deque)以及 Map 接口的所有实现类中的元素时,都必须使用迭代器。 Iterator 是唯一可用于整个集合框架的游标。

句法:

// Here "c" is any Collection object. itr is of
// type Iterator interface and refers to "c"
Iterator itr = c.iterator();

枚举枚举(或枚举)是用户定义的数据类型。它主要用于为整型常量赋值,这些名称使程序易于阅读和维护。在Java (从 1.5 开始)中,枚举使用 enum 数据类型表示。 Java枚举比 C/C++ 枚举更强大。在Java,我们还可以向其添加变量、方法和构造函数。枚举的主要目的是定义我们自己的数据类型(Enumerated Data Types)。

句法:

// A simple enum example where enum is declared 
// outside any class (Note enum keyword instead of 
// class keyword) 
enum Color 
{ 
    RED, GREEN, BLUE; 
}

迭代器和枚举的区别:

枚举和迭代器的功能是相同的。使用枚举只能遍历和获取对象,而使用迭代器我们还可以添加和删除对象。所以如果你愿意,迭代器可能很有用
操作列表,枚举用于只读访问。

Iterator Enumeration
Iterator is a universal cursor as it is applicable for all the collection classes. Enumeration is not a universal cursor as it applies only to legacy classes.
Iterator has the remove() method. Enumeration does not have the remove() method.
Iterator can do modifications (e.g using remove() method it removes the element from the Collection during traversal). Enumeration interface acts as a read only interface, one can not do any modifications to Collection while traversing the elements of the Collection.
Iterator is not a legacy interface. Iterator can be used for the traversal of HashMap, LinkedList, ArrayList, HashSet, TreeMap, TreeSet . Enumeration is a legacy interface which is used for traversing Vector, Hashtable.