Java >> Tutoriel Java >  >> Java

Différences entre l'énumération et l'itérateur en Java

Énumération vs itérateur en Java

Ici, nous verrons comment Enumeration diffère d'Iterator ?

1) Énumération

  • L'énumération est une interface introduite en Java.
  • Lors de l'itération d'un élément par énumération, nous ne pouvons parcourir que les éléments hérités. Nous verrons donc ici le concept d'héritage
    Héritage : Les versions précédentes ou antérieures de Java définissent diverses classes et une interface pour stocker les objets et le cadre de collecte n'incluaient pas à l'époque, donc lorsque le cadre de collecte est arrivé, ces classes sont repensées pour prendre en charge le cadre de collecte.
  • Nous pouvons créer un objet Enumeration en utilisant la méthode elements() de l'interface Enumeration.

    Syntaxe :

    Enumeration en = collection_object.elements();
  • Lors de l'itération d'un objet ou d'un élément par énumération, nous ne pouvons effectuer qu'une opération de lecture.
  • L'énumération est plus rapide que Iterator.
  • Dans le cas de l'énumération, nous utiliserons deux méthodes pour vérifier l'élément existant et itérer l'élément suivant.
    1. booléen aPlusElements()
    2. Objet nextElement()
  • Le concept d'énumération s'applique uniquement aux classes héritées, il ne prend donc pas en charge quelques collections, c'est pourquoi il ne s'agit pas d'une interface universelle.
  • En utilisant Enumeration, nous ne pouvons obtenir que ReadAccess et nous ne pouvons effectuer aucune opération de suppression.

Exemple :

import java.util.*;

class EnumerationClass {
    public static void main(String[] args) {
        // creating a Vector instance
        Vector v = new Vector();

        // add few elements by using addElement() of Vector class
        v.addElement(10);
        v.addElement(20);
        v.addElement(30);
        v.addElement(40);
        v.addElement(50);

        // print the vector list
        System.out.println(v);

        // creating an object of Enumeration 
        Enumeration en = v.elements();

        // loop to check existing more elements
        while (en.hasMoreElements()) {
            Integer in = (Integer) en.nextElement();
        }
        System.out.println(v);
    }
}

Sortie

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) Itérateur

  • Iterator est une interface introduite en Java.
  • Lors de l'itération d'un élément par Iterator, nous pouvons effectuer une opération de lecture et de suppression et nous ne pouvons effectuer aucune autre opération comme ajouter un objet, remplacer un objet.
  • Nous pouvons créer un objet Iterator en utilisant la méthode iterator() de l'interface Iterator.
    Syntaxe :
    Interface_name object_name = Collection_class.Iterator_method
  • Iterator est plus lent que Enumeration.
  • Dans le cas d'Iterator, nous utiliserons deux méthodes pour vérifier l'élément existant et itérer l'élément suivant.
    1. booléen hasNext()
    2. Objet suivant()
  • Le concept d'itérateur ne s'applique pas uniquement aux classes héritées, mais prend également en charge les classes non héritées, c'est pourquoi il s'agit d'une interface universelle.

Exemple :

import java.util.*; 

class IteratorClass {
    public static void main(String[] args) {
        // Creating a Set interface object
        Set set = new HashSet();

        // By using add() method to add few elements in set
        set.add("Java");
        set.add("Python");
        set.add("C++");
        set.add("Ruby");
        set.add("C");

        // Creating an object of Iterator interface
        Iterator itr = set.iterator();

        // loop for traversing an element
        while (itr.hasNext()) {
            String str = (String) itr.next();
            if (str.equals("C"))
                itr.remove();
        }
        // Display elements of Set interface 
        System.out.println("The final list of Iterator :" + set);
    }
}

Sortie

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]

Balise Java