Java中的枚举和迭代器之间的区别

Java中的枚举与迭代器

在这里,我们将看到Enumeration与Iterator有何不同?

1)枚举

  • 枚举是Java中引入的接口。

  • 在通过Enumeration迭代元素时,我们只能遍历旧元素,因此在这里我们将看到旧
    继承的概念早期或早期版本的Java定义了各种类,并且当时还没有一个用于存储对象和收集框架的接口,所以当收集框架来了,所以这些类被重新设计以支持收集框架。

  • 我们可以使用elements()Enumeration接口的方法创建一个Enumeration对象。

    语法:

    Enumeration en = collection_object.elements();
  • 当通过Enumeration迭代对象或元素时,我们只能执行读取操作。

  • 枚举比Iterator快。

  • 对于枚举,我们将使用两种方法检查现有元素并迭代下一个元素。

    1. 布尔值 hasMoreElements()

    2. 目的 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,我们将使用两种方法来检查现有元素并迭代下一个元素。

    1. 布尔值 hasNext()

    2. 目的 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]