English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

La differenza tra iteratori e enumeratori in Java

Iterator e Enumeration sono cursori utilizzati per esplorare e accedere agli elementi della raccolta. Entrambi appartengono al framework di raccolta. L'enumerazione è stata aggiunta agli Iterator del framework di raccolta nelle versioni JDK1.0 e JDK1.2. 

L'enumerazione non può modificare la struttura della raccolta, poiché ha accesso in sola lettura agli elementi della raccolta. Ha i seguenti metodi:

  • * hasMoreElements()

  • * nextElement()

D'altra parte, l'iteratore può leggere e eliminare gli elementi della raccolta. Ha i seguenti metodi-

  • *hasNext()

  • *nex()

  • * remove()

NumeroChiaveIteratoreEnumerazione
1
Base

In Iterator, possiamo leggere e eliminare gli elementi durante la scansione degli elementi della raccolta.

Utilizzando l'enumerazione, possiamo leggere gli elementi solo durante la scansione degli elementi della raccolta.
2. 
Accesso 

Può essere utilizzato con qualsiasi classe del framework di raccolta.

Può essere utilizzato solo con le vecchie classi del framework di raccolta, come Vector e HashTable.
3. 
Fallimento-fallimento e fallimento-sicurezza 

Qualsiasi modifica alla collezione, ad esempio la rimozione di un elemento dalla collezione durante l'iterazione thread, lancia l'eccezione di modifica concorrente.

L'enumerazione è essenzialmente sicura da故障. Non lancia l'eccezione di modifica concorrente 
4. 
Limitazioni 
È possibile eseguire solo iterazioni in senso ascendenteNon è possibile eseguire operazioni di rimozione utilizzando l'enumerazione.
5,
Metodo 

Ha i seguenti metodi -

* hasNext()
* next()
* remove()
 Ha i seguenti metodi -
* hasMoreElements()
* nextElement()

Esempio di enumerazione

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);
         }
      }
      //Mostra i nomi
      System.out.println("I nomi sono:");
      e = v.elements();
      while (e.hasMoreElements()) {
         //Stampa gli elementi
         System.out.println(e.nextElement());
      }
   }
}

Esempio di iteratore

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();
         }
      }
      //Mostra il nome
      System.out.println("I nomi sono:");
      i = v.iterator();
      while (i.hasNext()) {
         System.out.println(i.next());
      }
   }
}